From c901a159699c6f13a262bc6beada71c1c65160a4 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 9 Dec 2025 11:24:35 +0530 Subject: [PATCH] test: utils --- lms/lms/test_utils.py | 61 +++++++++++++++++++++++++++------- lms/lms/utils.py | 8 ----- lms/templates/reviews_cta.html | 9 ----- 3 files changed, 49 insertions(+), 29 deletions(-) delete mode 100644 lms/templates/reviews_cta.html diff --git a/lms/lms/test_utils.py b/lms/lms/test_utils.py index 344667f4..35e00d47 100644 --- a/lms/lms/test_utils.py +++ b/lms/lms/test_utils.py @@ -7,19 +7,27 @@ from .utils import ( get_chapters, get_instructors, get_lesson_index, + get_lesson_url, get_lessons, get_membership, get_reviews, get_tags, + has_course_instructor_role, + has_evaluator_role, + has_moderator_role, + has_student_role, + is_instructor, slugify, ) class TestUtils(unittest.TestCase): def setUp(self): - self.student1 = self.create_user("student1@example.com", "Ashley", "Smith", "LMS Student") - self.student2 = self.create_user("student2@example.com", "John", "Doe", "LMS Student") - self.admin = self.create_user("frappe@example.com", "Frappe", "Admin", "Moderator") + self.student1 = self.create_user("student1@example.com", "Ashley", "Smith", ["LMS Student"]) + self.student2 = self.create_user("student2@example.com", "John", "Doe", ["LMS Student"]) + self.admin = self.create_user( + "frappe@example.com", "Frappe", "Admin", ["Moderator", "Course Creator", "Batch Evaluator"] + ) self.create_a_course() self.add_chapters() @@ -75,16 +83,17 @@ class TestUtils(unittest.TestCase): chapterDoc.append("lessons", {"lesson": lesson.name}) chapterDoc.save() - def create_user(self, email, first_name, last_name, role): + def create_user(self, email, first_name, last_name, roles): if not frappe.db.exists("User", email): - student = frappe.new_doc("User") - student.email = email - student.first_name = first_name - student.last_name = last_name - student.user_type = "Website User" - student.append("roles", {"role": role}) - student.save() - return student + user = frappe.new_doc("User") + user.email = email + user.first_name = first_name + user.last_name = last_name + user.user_type = "Website User" + for role in roles: + user.append("roles", {"role": role}) + user.save() + return user else: return frappe.get_doc("User", email) @@ -168,6 +177,34 @@ class TestUtils(unittest.TestCase): for lesson in lessons: self.assertEqual(get_lesson_index(lesson.name), lesson.number) + def test_get_lesson_url(self): + lessons = get_lessons(self.course.name) + for lesson in lessons: + expected_url = f"/lms/courses/{self.course.name}/learn/{lesson.number}" + self.assertEqual(get_lesson_url(self.course.name, lesson.number), expected_url) + + def test_is_instructor(self): + frappe.session.user = "frappe@example.com" + self.assertTrue(is_instructor(self.course.name)) + frappe.session.user = "Administrator" + self.assertFalse(is_instructor(self.course.name)) + + def test_has_course_instructor_role(self): + self.assertIsNotNone(has_course_instructor_role("frappe@example.com")) + self.assertIsNone(has_course_instructor_role("student1@example.com")) + + def test_has_moderator_role(self): + self.assertIsNotNone(has_moderator_role("frappe@example.com")) + self.assertIsNone(has_moderator_role("student2@example.com")) + + def test_has_evaluator_role(self): + self.assertIsNotNone(has_evaluator_role("frappe@example.com")) + self.assertIsNone(has_evaluator_role("student2@example.com")) + + def test_has_student_role(self): + self.assertIsNotNone(has_student_role("student1@example.com")) + self.assertIsNotNone(has_student_role("student2@example.com")) + def tearDown(self): if frappe.db.exists("LMS Course", self.course.name): frappe.db.delete("LMS Enrollment", {"course": self.course.name}) diff --git a/lms/lms/utils.py b/lms/lms/utils.py index ba4d75f5..5d4bfae8 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -12,7 +12,6 @@ from frappe.rate_limiter import rate_limit from frappe.utils import ( add_months, cint, - cstr, flt, fmt_money, format_datetime, @@ -289,13 +288,6 @@ def get_progress(course, lesson, member=None): ) -def is_eligible_to_review(course): - """Checks if user is eligible to review the course""" - if frappe.db.count("LMS Course Review", {"course": course, "owner": frappe.session.user}): - return False - return True - - def get_course_progress(course, member=None): """Returns the course progress of the session user""" lesson_count = get_lessons(course, get_details=False) diff --git a/lms/templates/reviews_cta.html b/lms/templates/reviews_cta.html deleted file mode 100644 index f10250ae..00000000 --- a/lms/templates/reviews_cta.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if membership and is_eligible_to_review(course.name) %} - - {{ _("Write a review") }} - -{% elif not is_instructor and frappe.session.user == "Guest" %} - - {{ _("Write a review") }} - -{% endif %}