mirror of
https://github.com/frappe/lms.git
synced 2026-04-24 09:28:07 +03:00
test: test sync between evaluator doc and role
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
# Copyright (c) 2022, Frappe and Contributors
|
||||
# See license.txt
|
||||
|
||||
import frappe
|
||||
from frappe.utils import add_days, format_time, getdate
|
||||
|
||||
from lms.lms.api import save_role
|
||||
from lms.lms.doctype.course_evaluator.course_evaluator import get_schedule, get_schedule_range_end_date
|
||||
from lms.lms.test_helpers import BaseTestUtils
|
||||
|
||||
@@ -63,3 +65,59 @@ class TestCourseEvaluator(BaseTestUtils):
|
||||
for row in schedule:
|
||||
schedule_date = getdate(row.get("date"))
|
||||
self.assertFalse(unavailable_from < schedule_date < unavailable_to)
|
||||
|
||||
|
||||
class TestEvaluatorRoleCRUD(BaseTestUtils):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.admin = self._create_user(
|
||||
"frappe@example.com", "Frappe", "Admin", ["Moderator", "Course Creator", "Batch Evaluator"]
|
||||
)
|
||||
self.test_user = self._create_user("eval_test@example.com", "Eval", "Tester", ["LMS Student"])
|
||||
|
||||
def _has_batch_evaluator_role(self, user):
|
||||
return frappe.db.exists("Has Role", {"parent": user, "role": "Batch Evaluator"})
|
||||
|
||||
def _has_course_evaluator(self, user):
|
||||
return frappe.db.exists("Course Evaluator", {"evaluator": user})
|
||||
|
||||
def test_add_evaluator_role_creates_both(self):
|
||||
"""save_role with value=1 should create Has Role AND Course Evaluator."""
|
||||
frappe.set_user("frappe@example.com")
|
||||
save_role(self.test_user.email, "Batch Evaluator", 1)
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
self.assertTrue(self._has_batch_evaluator_role(self.test_user.email))
|
||||
self.assertTrue(self._has_course_evaluator(self.test_user.email))
|
||||
|
||||
self.cleanup_items.append(("Course Evaluator", self.test_user.email))
|
||||
|
||||
def test_remove_evaluator_role_removes_both(self):
|
||||
"""save_role with value=0 should remove Has Role AND Course Evaluator."""
|
||||
frappe.set_user("frappe@example.com")
|
||||
save_role(self.test_user.email, "Batch Evaluator", 1)
|
||||
save_role(self.test_user.email, "Batch Evaluator", 0)
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
self.assertFalse(self._has_batch_evaluator_role(self.test_user.email))
|
||||
self.assertFalse(self._has_course_evaluator(self.test_user.email))
|
||||
|
||||
def test_remove_evaluator_role_no_error_when_missing(self):
|
||||
"""Removing role that doesn't exist should not raise an error."""
|
||||
frappe.set_user("frappe@example.com")
|
||||
save_role(self.test_user.email, "Batch Evaluator", 0)
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
self.assertFalse(self._has_batch_evaluator_role(self.test_user.email))
|
||||
|
||||
def test_reject_non_lms_role(self):
|
||||
"""Assigning a role outside LMS_ROLES should raise PermissionError."""
|
||||
frappe.set_user("frappe@example.com")
|
||||
self.assertRaises(frappe.PermissionError, save_role, self.test_user.email, "System Manager", 1)
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
def test_non_moderator_cannot_save_role(self):
|
||||
"""[A non-moderator user should not be able to assign roles.]"""
|
||||
frappe.set_user(self.test_user.email)
|
||||
self.assertRaises(frappe.PermissionError, save_role, self.test_user.email, "Course Creator", 1)
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
Reference in New Issue
Block a user