test: utils

This commit is contained in:
Jannat Patel
2025-12-09 11:24:35 +05:30
parent 196d4a835f
commit c901a15969
3 changed files with 49 additions and 29 deletions
+49 -12
View File
@@ -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})
-8
View File
@@ -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)
-9
View File
@@ -1,9 +0,0 @@
{% if membership and is_eligible_to_review(course.name) %}
<span class="btn btn-secondary btn-sm review-link">
{{ _("Write a review") }}
</span>
{% elif not is_instructor and frappe.session.user == "Guest" %}
<a class="btn btn-secondary btn-sm" href="/login?redirect-to=/courses/{{ course.name }}">
{{ _("Write a review") }}
</a>
{% endif %}