diff options
Diffstat (limited to 'yaksh/test_views.py')
-rw-r--r-- | yaksh/test_views.py | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/yaksh/test_views.py b/yaksh/test_views.py index 7c932b5..569d4d7 100644 --- a/yaksh/test_views.py +++ b/yaksh/test_views.py @@ -2242,6 +2242,154 @@ class TestCourses(TestCase): self.user1_course.learning_module.remove(self.learning_module1) +class TestSearchFilters(TestCase): + def setUp(self): + self.client = Client() + + # Create moderator group + self.mod_group = Group.objects.create(name="moderator") + + #Create user1 with profile + self.user1_plaintext_pass = "demo1" + self.user1 = User.objects.create_user( + username='demo_user1', + password=self.user1_plaintext_pass, + first_name='user1_first_name', + last_name='user1_last_name', + email='demo1@test.com' + ) + Profile.objects.create( + user=self.user1, + roll_number=10, + institute="IIT", + department="Chemical", + position="moderator", + timezone="UTC", + is_moderator=True + ) + + # Add user1 to moderator group + self.mod_group.user_set.add(self.user1) + + # Create courses for user1 + self.user1_course1 = Course.objects.create( + name="Demo Course", + enrollment="Enroll Request", creator=self.user1) + self.user1_course2 = Course.objects.create( + name="Test Course", + enrollment="Enroll Request", creator=self.user1) + + # Create learning modules for user1 + self.learning_module1 = LearningModule.objects.create( + order=0, name="Demo Module", description="Demo Module", + check_prerequisite=False, creator=self.user1) + self.learning_module2 = LearningModule.objects.create( + order=0, name="Test Module", description="Test Module", + check_prerequisite=False, creator=self.user1) + + # Create quizzes for user1 + self.quiz1 = Quiz.objects.create( + time_between_attempts=0, description='Demo Quiz', + creator=self.user1) + self.question_paper1 = QuestionPaper.objects.create( + quiz=self.quiz1, total_marks=1.0) + + self.quiz2 = Quiz.objects.create( + time_between_attempts=0, description='Test Quiz', + creator=self.user1) + self.question_paper2 = QuestionPaper.objects.create( + quiz=self.quiz2, total_marks=1.0) + + # Create lessons for user1 + self.lesson1 = Lesson.objects.create( + name="Demo Lesson", description="Demo Lession", + creator=self.user1) + self.lesson2 = Lesson.objects.create( + name="Test Lesson", description="Test Lesson", + creator=self.user1) + + # Create units for lesson and quiz + self.lesson_unit1 = LearningUnit.objects.create( + order=1, type="lesson", lesson=self.lesson1) + self.lesson_unit2 = LearningUnit.objects.create( + order=1, type="lesson", lesson=self.lesson2) + self.quiz_unit1 = LearningUnit.objects.create( + order=2, type="quiz", quiz=self.quiz1) + self.quiz_unit2 = LearningUnit.objects.create( + order=2, type="quiz", quiz=self.quiz2) + + # Add units to module + self.learning_module1.learning_unit.add(self.lesson_unit1) + self.learning_module1.learning_unit.add(self.quiz_unit1) + self.learning_module2.learning_unit.add(self.lesson_unit2) + self.learning_module2.learning_unit.add(self.quiz_unit2) + + def tearDown(self): + self.client.logout() + self.user1.delete() + self.mod_group.delete() + + def test_courses_search_filter(self): + """ Test to check if courses are obtained with tags and status """ + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.post( + reverse('yaksh:courses'), + data={'course_tags': 'demo', 'course_status': 'active'} + ) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'yaksh/courses.html') + self.assertIsNotNone(response.context['form']) + self.assertIn(self.user1_course1, response.context['courses']) + + def test_quizzes_search_filter(self): + """ Test to check if quizzes are obtained with tags and status """ + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.post( + reverse('yaksh:show_all_quizzes'), + data={'quiz_tags': 'demo', 'quiz_status': 'active'} + ) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'yaksh/quizzes.html') + self.assertIsNotNone(response.context['form']) + self.assertIn(self.quiz1, response.context['quizzes']) + + def test_lessons_search_filter(self): + """ Test to check if lessons are obtained with tags and status """ + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.post( + reverse('yaksh:show_all_lessons'), + data={'lesson_tags': 'demo', 'lesson_status': 'active'} + ) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'yaksh/lessons.html') + self.assertIsNotNone(response.context['form']) + self.assertIn(self.lesson1, response.context['lessons']) + + def test_learning_modules_search_filter(self): + """ Test to check if learning modules are obtained with tags and status """ + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.post( + reverse('yaksh:show_all_modules'), + data={'module_tags': 'demo', 'module_status': 'active'} + ) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'yaksh/modules.html') + self.assertIsNotNone(response.context['form']) + self.assertIn(self.learning_module1, response.context['modules']) + + class TestAddCourse(TestCase): def setUp(self): self.client = Client() @@ -4211,6 +4359,24 @@ class TestDownloadCsv(TestCase): self.assertEqual(response.get('Content-Disposition'), 'attachment; filename="{0}"'.format(file_name)) + def test_download_course_progress_csv(self): + """ + Check for csv result of a course progress + """ + self.client.login( + username=self.user.username, + password=self.user_plaintext_pass + ) + response = self.client.get( + reverse('yaksh:download_course_progress', + kwargs={'course_id': self.course.id}), + follow=True + ) + file_name = "{0}.csv".format(self.course.name.lower().replace(" ", "_")) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.get('Content-Disposition'), + 'attachment; filename="{0}"'.format(file_name)) + def test_download_quiz_csv(self): """ Check for csv result of a quiz |