mirror of
https://github.com/frappe/lms.git
synced 2026-05-02 13:39:31 +03:00
test: evaluation schedule
This commit is contained in:
@@ -61,8 +61,7 @@ class CourseEvaluator(Document):
|
||||
def get_schedule(course, batch=None):
|
||||
evaluator = get_evaluator(course, batch)
|
||||
start_date = nowdate()
|
||||
end_date = get_end_date(start_date, batch)
|
||||
print(start_date, end_date)
|
||||
end_date = get_schedule_range_end_date(start_date, batch)
|
||||
all_slots = get_all_slots(evaluator, start_date, end_date)
|
||||
booked_slots = get_booked_slots(evaluator, start_date, end_date)
|
||||
all_slots = remove_booked_slots(all_slots, booked_slots)
|
||||
@@ -173,7 +172,7 @@ def get_unavailable_dates(evaluator):
|
||||
return unavailable_dates
|
||||
|
||||
|
||||
def get_end_date(start_date, batch=None):
|
||||
def get_schedule_range_end_date(start_date, batch=None):
|
||||
end_date = add_days(start_date, 60)
|
||||
if batch:
|
||||
batch_end_date = frappe.db.get_value("LMS Batch", batch, "evaluation_end_date")
|
||||
|
||||
@@ -3,7 +3,33 @@
|
||||
|
||||
# import frappe
|
||||
from frappe.tests import UnitTestCase
|
||||
from frappe.utils import format_time
|
||||
|
||||
from lms.lms.doctype.course_evaluator.course_evaluator import get_schedule
|
||||
from lms.lms.test_utils import TestUtils
|
||||
|
||||
|
||||
class TestCourseEvaluator(UnitTestCase):
|
||||
pass
|
||||
def setUp(self):
|
||||
self.admin = TestUtils.create_user(
|
||||
self, "frappe@example.com", "Frappe", "Admin", ["Moderator", "Course Creator", "Batch Evaluator"]
|
||||
)
|
||||
self.course = TestUtils.create_a_course(self)
|
||||
|
||||
self.evaluator = TestUtils.create_evaluator(self)
|
||||
self.batch = TestUtils.create_a_batch(self)
|
||||
|
||||
def test_schedule(self):
|
||||
schedule = get_schedule(self.batch.courses[0].course, self.batch.name)
|
||||
days = ["Monday", "Wednesday"]
|
||||
self.assertGreaterEqual(len(schedule), 16)
|
||||
for row in schedule:
|
||||
self.assertIn(row.get("day"), days)
|
||||
if row.get("day") == "Monday":
|
||||
for slot in row.get("slots"):
|
||||
self.assertEqual(format_time(slot.get("start_time"), "HH:mm:ss"), "10:00:00")
|
||||
self.assertEqual(format_time(slot.get("end_time"), "HH:mm:ss"), "12:00:00")
|
||||
if row.get("day") == "Wednesday":
|
||||
for slot in row.get("slots"):
|
||||
self.assertEqual(format_time(slot.get("start_time"), "HH:mm:ss"), "14:00:00")
|
||||
self.assertEqual(format_time(slot.get("end_time"), "HH:mm:ss"), "16:00:00")
|
||||
|
||||
+53
-6
@@ -1,12 +1,14 @@
|
||||
import unittest
|
||||
|
||||
import frappe
|
||||
from frappe.utils import add_days, nowdate
|
||||
|
||||
from lms.lms.doctype.lms_certificate.lms_certificate import get_default_certificate_template, is_certified
|
||||
|
||||
from .utils import (
|
||||
get_average_rating,
|
||||
get_chapters,
|
||||
get_evaluator,
|
||||
get_instructors,
|
||||
get_lesson_index,
|
||||
get_lesson_url,
|
||||
@@ -31,7 +33,7 @@ class TestUtils(unittest.TestCase):
|
||||
"frappe@example.com", "Frappe", "Admin", ["Moderator", "Course Creator", "Batch Evaluator"]
|
||||
)
|
||||
|
||||
self.create_a_course()
|
||||
self.course = self.create_a_course()
|
||||
self.add_chapters()
|
||||
self.add_lessons()
|
||||
|
||||
@@ -43,7 +45,14 @@ class TestUtils(unittest.TestCase):
|
||||
|
||||
self.create_certificate(self.course.name, self.student1.email)
|
||||
|
||||
self.evaluator = self.create_evaluator()
|
||||
self.batch = self.create_a_batch()
|
||||
|
||||
def create_a_course(self):
|
||||
existing_course = frappe.db.exists("LMS Course", {"title": "Utility Course"})
|
||||
if existing_course:
|
||||
return frappe.get_doc("LMS Course", existing_course)
|
||||
|
||||
course = frappe.new_doc("LMS Course")
|
||||
course.title = "Utility Course"
|
||||
course.short_introduction = "A course to test utilities of Frappe Learning"
|
||||
@@ -52,7 +61,7 @@ class TestUtils(unittest.TestCase):
|
||||
course.published = 1
|
||||
course.append("instructors", {"instructor": "frappe@example.com"})
|
||||
course.save()
|
||||
self.course = course
|
||||
return course
|
||||
|
||||
def add_chapters(self):
|
||||
chapters = []
|
||||
@@ -66,7 +75,6 @@ class TestUtils(unittest.TestCase):
|
||||
self.course.reload()
|
||||
for chapter in chapters:
|
||||
self.course.append("chapters", {"chapter": chapter.name})
|
||||
|
||||
self.course.save()
|
||||
|
||||
def add_lessons(self):
|
||||
@@ -87,8 +95,41 @@ class TestUtils(unittest.TestCase):
|
||||
chapterDoc.append("lessons", {"lesson": lesson.name})
|
||||
chapterDoc.save()
|
||||
|
||||
def create_evaluator(self):
|
||||
if frappe.db.exists("Course Evaluator", "frappe@example.com"):
|
||||
return frappe.get_doc("Course Evaluator", "frappe@example.com")
|
||||
|
||||
evaluator = frappe.new_doc("Course Evaluator")
|
||||
evaluator.evaluator = "frappe@example.com"
|
||||
evaluator.append("schedule", {"day": "Monday", "start_time": "10:00", "end_time": "12:00"})
|
||||
evaluator.append("schedule", {"day": "Wednesday", "start_time": "14:00", "end_time": "16:00"})
|
||||
evaluator.save()
|
||||
return evaluator
|
||||
|
||||
def create_a_batch(self):
|
||||
existing_batch = frappe.db.exists("LMS Batch", {"title": "Utility Training"})
|
||||
if existing_batch:
|
||||
return frappe.get_doc("LMS Batch", existing_batch)
|
||||
|
||||
batch = frappe.new_doc("LMS Batch")
|
||||
batch.title = "Utility Training"
|
||||
batch.start_date = nowdate()
|
||||
batch.end_date = add_days(batch.start_date, 10)
|
||||
batch.start_time = "09:00:00"
|
||||
batch.end_time = "11:00:00"
|
||||
batch.timezone = "Asia/Kolkata"
|
||||
batch.description = "Batch for Utility Course Training"
|
||||
batch.batch_details = "This batch is created to test utility functions."
|
||||
batch.evaluation_end_date = add_days(nowdate(), 120)
|
||||
batch.append("instructors", {"instructor": "frappe@example.com"})
|
||||
batch.append("courses", {"course": self.course.name, "evaluator": "frappe@example.com"})
|
||||
batch.save()
|
||||
return batch
|
||||
|
||||
def create_user(self, email, first_name, last_name, roles):
|
||||
if not frappe.db.exists("User", email):
|
||||
if frappe.db.exists("User", email):
|
||||
return frappe.get_doc("User", email)
|
||||
else:
|
||||
user = frappe.new_doc("User")
|
||||
user.email = email
|
||||
user.first_name = first_name
|
||||
@@ -98,8 +139,6 @@ class TestUtils(unittest.TestCase):
|
||||
user.append("roles", {"role": role})
|
||||
user.save()
|
||||
return user
|
||||
else:
|
||||
return frappe.get_doc("User", email)
|
||||
|
||||
def create_certificate(self, course_name, member):
|
||||
certificate = frappe.new_doc("LMS Certificate")
|
||||
@@ -232,7 +271,14 @@ class TestUtils(unittest.TestCase):
|
||||
frappe.session.user = "Administrator"
|
||||
frappe.delete_doc("User", student3.email)
|
||||
|
||||
def test_get_evaluator(self):
|
||||
evaluator_email = get_evaluator(self.course.name, self.batch.name)
|
||||
self.assertEqual(evaluator_email, self.evaluator.evaluator)
|
||||
|
||||
def tearDown(self):
|
||||
if frappe.db.exists("LMS Batch", self.batch.name):
|
||||
frappe.delete_doc("LMS Batch", self.batch.name)
|
||||
|
||||
if frappe.db.exists("LMS Course", self.course.name):
|
||||
frappe.db.delete("LMS Certificate", {"course": self.course.name})
|
||||
frappe.db.delete("LMS Enrollment", {"course": self.course.name})
|
||||
@@ -242,6 +288,7 @@ class TestUtils(unittest.TestCase):
|
||||
frappe.db.delete("Course Instructor", {"parent": self.course.name})
|
||||
frappe.delete_doc("LMS Course", self.course.name)
|
||||
|
||||
frappe.delete_doc("Course Evaluator", self.evaluator.name)
|
||||
frappe.delete_doc("User", "student1@example.com")
|
||||
frappe.delete_doc("User", "student2@example.com")
|
||||
frappe.delete_doc("User", "frappe@example.com")
|
||||
|
||||
Reference in New Issue
Block a user