from odoo.tests.common import TransactionCase class TestLms(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.year = cls.env["mc.academic.year"].create({ "name": "TEST-LMS-2026-27", "date_start": "2026-06-01", "date_end": "2027-04-30", }) cls.program = cls.env["mc.program"].create({ "name": "TEST LMS Program", "code": "TEST-LMS-P1", "sequence_no": 1, "display_label": "Test Grade", }) cls.channel = cls.env["slide.channel"].create({"name": "TEST LMS Channel"}) cls.batch = cls.env["mc.batch"].create({ "name": "TEST LMS Batch", "program_id": cls.program.id, "year_id": cls.year.id, "channel_id": cls.channel.id, }) partner = cls.env["res.partner"].create({"name": "LMS Test Student"}) cls.student = cls.env["mc.student"].create({ "partner_id": partner.id, "name": "LMS Test Student", }) def test_active_enrollment_joins_the_batchs_channel(self): self.env["mc.enrollment"].create({ "student_id": self.student.id, "program_id": self.program.id, "batch_id": self.batch.id, "year_id": self.year.id, "state": "active", }) member = self.env["slide.channel.partner"].search([ ("channel_id", "=", self.channel.id), ("partner_id", "=", self.student.partner_id.id), ]) self.assertTrue(member) self.assertEqual(member.member_status, "joined") def test_draft_enrollment_does_not_join_the_channel(self): self.env["mc.enrollment"].create({ "student_id": self.student.id, "program_id": self.program.id, "batch_id": self.batch.id, "year_id": self.year.id, "state": "draft", }) member = self.env["slide.channel.partner"].search([ ("channel_id", "=", self.channel.id), ("partner_id", "=", self.student.partner_id.id), ]) self.assertFalse(member) def test_activating_a_draft_enrollment_joins_the_channel(self): enrollment = self.env["mc.enrollment"].create({ "student_id": self.student.id, "program_id": self.program.id, "batch_id": self.batch.id, "year_id": self.year.id, "state": "draft", }) enrollment.write({"state": "active"}) member = self.env["slide.channel.partner"].search([ ("channel_id", "=", self.channel.id), ("partner_id", "=", self.student.partner_id.id), ]) self.assertTrue(member) def test_batch_without_channel_does_not_error(self): batch_no_channel = self.env["mc.batch"].create({ "name": "TEST LMS Batch No Channel", "program_id": self.program.id, "year_id": self.year.id, }) # Should not raise. self.env["mc.enrollment"].create({ "student_id": self.student.id, "program_id": self.program.id, "batch_id": batch_no_channel.id, "year_id": self.year.id, "state": "active", })