From ca9cd739cd528b1fe883f25be1d76b8bbdb7bc25 Mon Sep 17 00:00:00 2001 From: adityacp Date: Fri, 12 Jan 2018 17:46:23 +0530 Subject: Add views and models tests for course status --- yaksh/models.py | 1 + yaksh/test_models.py | 42 +++++++++++++++++++++++++++++++++++++++++- yaksh/test_views.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/yaksh/models.py b/yaksh/models.py index f37df3b..3b1e3ba 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals +from __future__ import division from datetime import datetime, timedelta import json import random diff --git a/yaksh/test_models.py b/yaksh/test_models.py index 59dea5b..7086a1e 100644 --- a/yaksh/test_models.py +++ b/yaksh/test_models.py @@ -2,7 +2,7 @@ import unittest from yaksh.models import User, Profile, Question, Quiz, QuestionPaper,\ QuestionSet, AnswerPaper, Answer, Course, StandardTestCase,\ StdIOBasedTestCase, FileUpload, McqTestCase, AssignmentUpload,\ - LearningModule, LearningUnit, Lesson, LessonFile + LearningModule, LearningUnit, Lesson, LessonFile, CourseStatus from yaksh.code_server import(ServerPool, get_result as get_result_from_code_server ) @@ -204,6 +204,26 @@ class LearningModuleTestCases(unittest.TestCase): # Then self.assertEqual(status, module_status) + def test_module_completion_percent(self): + # for module without learning units + percent = self.learning_module_two.get_module_complete_percent( + self.course, self.student + ) + self.assertEqual(percent, 0) + + # for module with learning units + lesson = Lesson.objects.get(name='L1') + self.completed_unit = LearningUnit.objects.get(lesson=lesson) + + course_status = CourseStatus.objects.create( + course=self.course, user=self.student) + course_status.completed_units.add(self.completed_unit) + + percent = self.learning_module.get_module_complete_percent( + self.course, self.student + ) + self.assertEqual(percent, 50) + class LearningUnitTestCases(unittest.TestCase): def setUp(self): @@ -1523,6 +1543,26 @@ class CourseTestCases(unittest.TestCase): """Test to check enrollment is closed for open course""" self.assertFalse(self.enroll_request_course.is_active_enrollment()) + def test_course_complete_percent(self): + # for course with no modules + self.no_module_course = Course.objects.create( + name="test_course", creator=self.creator, enrollment="open") + percent = self.course.percent_completed(self.student1) + self.assertEqual(percent, 0) + + # for course with module but zero percent completed + percent = self.course.percent_completed(self.student1) + self.assertEqual(percent, 0) + + # Add completed unit to course status and check percent + lesson = Lesson.objects.get(name='L1') + self.completed_unit = LearningUnit.objects.get(lesson=lesson) + + course_status = CourseStatus.objects.create( + course=self.course, user=self.student1) + course_status.completed_units.add(self.completed_unit) + updated_percent = self.course.percent_completed(self.student1) + self.assertEqual(updated_percent, 25) ############################################################################### diff --git a/yaksh/test_views.py b/yaksh/test_views.py index 71d6f80..343e043 100644 --- a/yaksh/test_views.py +++ b/yaksh/test_views.py @@ -2089,6 +2089,11 @@ class TestCourseDetail(TestCase): self.user1_course = Course.objects.create(name="Python Course", enrollment="Enroll Request", creator=self.user1) + self.learning_module = LearningModule.objects.create( + name="test module", description="test description module", + html_data="test html description module", creator=self.user1, + order=1) + self.user1_course.learning_module.add(self.learning_module) def tearDown(self): self.client.logout() @@ -2475,6 +2480,30 @@ class TestCourseDetail(TestCase): self.assertEqual(response.get('Content-Disposition'), 'attachment; filename="sample_user_upload"') + def test_view_course_status(self): + """ Test to view course status """ + self.client.login( + username=self.student.username, + password=self.student_plaintext_pass + ) + + # Denies student to view course status + response = self.client.get(reverse('yaksh:course_status', + kwargs={'course_id': self.user1_course.id})) + self.assertEqual(response.status_code, 404) + + # Moderator Login + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.get(reverse('yaksh:course_status', + kwargs={'course_id': self.user1_course.id})) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['state'], "course_status") + self.assertEqual(response.context['course'], self.user1_course) + self.assertEqual(response.context['modules'][0], self.learning_module) + class TestEnrollRequest(TestCase): def setUp(self): -- cgit