diff --git a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py index 3993eacd..fe563a63 100644 --- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py +++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py @@ -17,7 +17,8 @@ class LMSBatchMembership(Document): previous_membership = frappe.db.get_value("LMS Batch Membership", filters={ "member": self.member, - "batch": self.batch, "name": ["!=", self.name] + "batch": self.batch, + "name": ["!=", self.name] }, fieldname=["member_type","member"], as_dict=1) @@ -30,7 +31,8 @@ class LMSBatchMembership(Document): course = frappe.db.get_value("LMS Batch", self.batch, "course") previous_membership = frappe.get_all("LMS Batch Membership", filters={ - "member": self.member + "member": self.member, + "name": ["!=", self.name] }, fields=["batch", "member_type"] ) diff --git a/community/lms/doctype/lms_batch_membership/test_lms_batch_membership.py b/community/lms/doctype/lms_batch_membership/test_lms_batch_membership.py index 43ceaccf..703e144f 100644 --- a/community/lms/doctype/lms_batch_membership/test_lms_batch_membership.py +++ b/community/lms/doctype/lms_batch_membership/test_lms_batch_membership.py @@ -3,8 +3,77 @@ # See license.txt from __future__ import unicode_literals -# import frappe +import frappe import unittest class TestLMSBatchMembership(unittest.TestCase): - pass + def setUp(self): + frappe.db.sql("DELETE FROM `tabLMS Batch Membership`") + frappe.db.sql("DELETE FROM `tabLMS Batch`") + frappe.db.sql('delete from `tabLMS Course Mentor Mapping`') + frappe.db.sql("DELETE FROM `tabLMS Course`") + frappe.db.sql("DELETE FROM `tabCommunity Member` where email like '%@test.com'") + frappe.db.sql("DELETE FROM `tabUser` where email like '%@test.com'") + + def new_course_batch(self): + course = frappe.get_doc({ + "doctype": "LMS Course", + "name": "test-course", + "title": "Test Course", + "short_code": "XX" + }) + course.insert() + + self.new_user("mentor@test.com", "Test Mentor") + # without this, the creating batch will fail + course.add_mentor("mentor@test.com") + + frappe.session.user = "mentor@test.com" + + batch = frappe.get_doc({ + "doctype": "LMS Batch", + "name": "test-batch", + "title": "Test Batch", + "course": course.name + }) + batch.insert(ignore_permissions=True) + + frappe.session.user = "Administrator" + return course, batch + + def new_user(self, email="test@test.com", full_name="Test User"): + user = frappe.get_doc({ + "doctype": "User", + "name": email, + "email": email, + "first_name": full_name, + }) + user.insert() + return user + + def add_membership(self, batch_name, member_name, member_type="Student"): + doc = frappe.get_doc({ + "doctype": "LMS Batch Membership", + "batch": batch_name, + "member": member_name, + "member_type": member_type + }) + doc.insert() + return doc + + def test_membership(self): + course, batch = self.new_course_batch() + member = self.new_user("test01@test.com") + membership = self.add_membership(batch.name, member.name) + + assert membership.course == course.name + assert membership.member_name == member.full_name + + def test_membership_change_role(self): + course, batch = self.new_course_batch() + member = self.new_user("test01@test.com") + membership = self.add_membership(batch.name, member.name) + + # it should be possible to change role + membership.role = "Admin" + membership.save()