From 23c238315aacb7736a97c35040846b7c7104bb43 Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Wed, 6 May 2020 22:31:56 +0530
Subject: Fix tests

---
 yaksh/test_views.py | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index 94b81ad..af0193e 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -2974,11 +2974,14 @@ class TestCourseDetail(TestCase):
             username=self.user1.username,
             password=self.user1_plaintext_pass
         )
-        response = self.client.post(
-            reverse('yaksh:enroll_users',
-                    kwargs={'course_id': self.user1_course.id}),
-            data={'check': self.student1.id}
-            )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'check': self.student1.id,
+            'enroll': 'enroll'
+        }
+        response = self.client.post(url, data)
         enrolled_student = self.user1_course.students.all()
         self.assertEqual(response.status_code, 302)
         self.assertSequenceEqual([self.student1], enrolled_student)
@@ -3008,11 +3011,14 @@ class TestCourseDetail(TestCase):
             username=self.user1.username,
             password=self.user1_plaintext_pass
         )
-        response = self.client.post(
-            reverse('yaksh:reject_users',
-                    kwargs={'course_id': self.user1_course.id}),
-            data={'check': self.student1.id}
-            )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'check': self.student1.id,
+            'reject': 'reject'
+        }
+        response = self.client.post(url, data)
         enrolled_student = self.user1_course.rejected.all()
         self.assertEqual(response.status_code, 302)
         self.assertSequenceEqual([self.student1], enrolled_student)
-- 
cgit 


From 624a0971830b1fd30fe5d1f389b5a143a210d235 Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Fri, 8 May 2020 22:08:24 +0530
Subject: More tests to test course detail page

---
 yaksh/test_views.py | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 240 insertions(+)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index af0193e..5b873b5 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -2636,6 +2636,12 @@ class TestCourseDetail(TestCase):
             name="Python Course II",
             enrollment="Enroll Request", creator=self.user1
             )
+        self.user1_deactive_course = Course.objects.create(
+            name="Python Course II",
+            enrollment="Enroll Request",
+            creator=self.user1,
+            active=False
+        )
         self.learning_module = LearningModule.objects.create(
             name="test module", description="test description module",
             html_data="test html description module", creator=self.user1,
@@ -2986,6 +2992,64 @@ class TestCourseDetail(TestCase):
         self.assertEqual(response.status_code, 302)
         self.assertSequenceEqual([self.student1], enrolled_student)
 
+    def test_student_course_enroll_post_without_enroll_in_request(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'check': self.student1.id,
+            'enroll': ''
+        }
+        response = self.client.post(url, data)
+        self.assertEqual(response.status_code, 302)
+
+    def test_student_course_enroll_post_without_enroll_ids(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'enroll': 'enroll'
+        }
+        response = self.client.post(url, data)
+        self.assertEqual(response.status_code, 302)
+
+    def test_student_course_reject_post_without_reject_in_request(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'check': self.student1.id,
+            'reject': ''
+        }
+        response = self.client.post(url, data)
+        self.assertEqual(response.status_code, 302)
+
+    def test_student_course_reject_post_without_reject_ids(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id
+        })
+        data = {
+            'reject': 'reject'
+        }
+        response = self.client.post(url, data)
+        self.assertEqual(response.status_code, 302)
+
     def test_student_course_reject_get(self):
         """
             Reject student in a course using get request
@@ -3023,6 +3087,64 @@ class TestCourseDetail(TestCase):
         self.assertEqual(response.status_code, 302)
         self.assertSequenceEqual([self.student1], enrolled_student)
 
+    def test_enroll_user_not_moderator(self):
+        self.client.login(
+            username=self.student.username,
+            password=self.student_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_user', kwargs={
+            'course_id': self.user1_course.id,
+            'user_id': self.user1.id
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
+    def test_enroll_user_in_deactivated_course(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_user', kwargs={
+            'course_id': self.user1_deactive_course.id,
+            'user_id': self.student.id
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 302)
+
+    def test_reject_user_not_moderator(self):
+        self.client.login(
+            username=self.student.username,
+            password=self.student_plaintext_pass
+        )
+        url = reverse('yaksh:reject_user', kwargs={
+            'course_id': self.user1_course.id,
+            'user_id': self.user1.id
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
+    def test_enroll_reject_user_not_moderator(self):
+        self.client.login(
+            username=self.student.username,
+            password=self.student_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id,
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
+    def test_enroll_reject_user_in_deactivated_course(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_deactive_course.id,
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 302)
+
     def test_toggle_course_status_get(self):
         self.client.login(
             username=self.user1.username,
@@ -3216,6 +3338,124 @@ class TestCourseDetail(TestCase):
         self.assertIn("Per Module Progress", data)
 
 
+class TestCourseStudents(TestCase):
+    def setUp(self):
+        self.client = Client()
+        self.mod_group = Group.objects.create(name='moderator')
+
+        # Create Moderator 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='demo@test.com'
+        )
+
+        Profile.objects.create(
+            user=self.user1,
+            roll_number=10,
+            institute='IIT',
+            department='Chemical',
+            position='Moderator',
+            timezone='UTC',
+            is_moderator=True
+        )
+
+        self.student_plaintext_pass = 'demo_student'
+        self.student = User.objects.create_user(
+            username='demo_student',
+            password=self.student_plaintext_pass,
+            first_name='student_first_name',
+            last_name='student_last_name',
+            email='demo_student@test.com'
+        )
+        self.student1_plaintext_pass = 'demo_student'
+        self.student1 = User.objects.create_user(
+            username='demo_student1',
+            password=self.student1_plaintext_pass,
+            first_name='student1_first_name',
+            last_name='student1_last_name',
+            email='demo_student1@test.com'
+        )
+
+        self.student2_plaintext_pass = 'demo_student'
+        self.student2 = User.objects.create_user(
+            username='demo_student2',
+            password=self.student2_plaintext_pass,
+            first_name='student2_first_name',
+            last_name='student2_last_name',
+            email='demo_student2@test.com'
+        )
+
+        # Add to moderator group
+        self.mod_group.user_set.add(self.user1)
+
+        self.user1_course = Course.objects.create(
+            name="Python Course",
+            enrollment="Enroll Request", creator=self.user1
+            )
+
+        # self.course.students.add(self.student)
+        self.user1_course.enroll(False, self.student)
+        self.user1_course.reject(False, self.student1)
+        self.user1_course.request(self.student2)
+
+    def test_enrolled_users(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id
+        })
+        response = self.client.get(url)
+        enrolled_users = self.user1_course.get_enrolled()
+        self.assertTrue(enrolled_users.exists())
+
+    def test_requested_users(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id
+        })
+        response = self.client.get(url)
+        requested_users = self.user1_course.get_requests()
+        self.assertTrue(requested_users.exists())
+
+    def test_rejected_users(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id
+        })
+        response = self.client.get(url)
+        rejected_users = self.user1_course.get_rejected()
+        self.assertTrue(rejected_users.exists())
+
+    def test_course_students_context(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id
+        })
+        response = self.client.get(url)
+        self.assertTrue('enrolled_users' in response.context)
+        self.assertTrue('requested_users' in response.context)
+        self.assertTrue('rejected_users' in response.context)
+
+
+    def tearDown(self):
+        pass
+
+
 class TestEnrollRequest(TestCase):
     def setUp(self):
         self.client = Client()
-- 
cgit 


From b36ea2af46cbf50aa7a046aa35d0c5c1543e6623 Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Sat, 9 May 2020 16:42:14 +0530
Subject: Add missing tests.

---
 yaksh/test_views.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 77 insertions(+), 4 deletions(-)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index 5b873b5..555f933 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -2632,16 +2632,19 @@ class TestCourseDetail(TestCase):
             name="Python Course",
             enrollment="Enroll Request", creator=self.user1
             )
+
         self.user1_othercourse = Course.objects.create(
             name="Python Course II",
             enrollment="Enroll Request", creator=self.user1
             )
+
         self.user1_deactive_course = Course.objects.create(
             name="Python Course II",
             enrollment="Enroll Request",
             creator=self.user1,
-            active=False
+            end_enroll_time=timezone.now()
         )
+
         self.learning_module = LearningModule.objects.create(
             name="test module", description="test description module",
             html_data="test html description module", creator=self.user1,
@@ -3099,7 +3102,7 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 404)
 
-    def test_enroll_user_in_deactivated_course(self):
+    def test_enroll_user_in_expired_course(self):
         self.client.login(
             username=self.user1.username,
             password=self.user1_plaintext_pass
@@ -3111,6 +3114,18 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 302)
 
+    def test_enroll_user_where_moderator_is_neither_creator_nor_teacher(self):
+        self.client.login(
+            username=self.user2.username,
+            password=self.user2_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_user', kwargs={
+            'course_id': self.user1_course.id,
+            'user_id': self.user1.id
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
     def test_reject_user_not_moderator(self):
         self.client.login(
             username=self.student.username,
@@ -3123,6 +3138,18 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 404)
 
+    def test_reject_user_where_moderator_is_neither_creator_nor_teacher(self):
+        self.client.login(
+            username=self.user2.username,
+            password=self.user2_plaintext_pass
+        )
+        url = reverse('yaksh:reject_user', kwargs={
+            'course_id': self.user1_course.id,
+            'user_id': self.user1.id
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
     def test_enroll_reject_user_not_moderator(self):
         self.client.login(
             username=self.student.username,
@@ -3145,6 +3172,17 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 302)
 
+    def test_enroll_reject_user_where_moderator_is_neither_creator_nor_teacher(self):
+        self.client.login(
+            username=self.user2.username,
+            password=self.user2_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id,
+        })
+        response = self.client.post(url)
+        self.assertEqual(response.status_code, 404)
+
     def test_toggle_course_status_get(self):
         self.client.login(
             username=self.user1.username,
@@ -3363,6 +3401,25 @@ class TestCourseStudents(TestCase):
             is_moderator=True
         )
 
+        self.user2_plaintext_pass = 'demo2'
+        self.user2 = User.objects.create_user(
+            username='demo_user2',
+            password=self.user2_plaintext_pass,
+            first_name='user2_first_name',
+            last_name='user2_last_name',
+            email='demo2@test.com'
+        )
+
+        Profile.objects.create(
+            user=self.user2,
+            roll_number=10,
+            institute='IIT',
+            department='Aeronautical',
+            position='Moderator',
+            timezone='UTC',
+            is_moderator=True
+        )
+
         self.student_plaintext_pass = 'demo_student'
         self.student = User.objects.create_user(
             username='demo_student',
@@ -3391,13 +3448,13 @@ class TestCourseStudents(TestCase):
 
         # Add to moderator group
         self.mod_group.user_set.add(self.user1)
+        self.mod_group.user_set.add(self.user2)
 
         self.user1_course = Course.objects.create(
             name="Python Course",
             enrollment="Enroll Request", creator=self.user1
             )
 
-        # self.course.students.add(self.student)
         self.user1_course.enroll(False, self.student)
         self.user1_course.reject(False, self.student1)
         self.user1_course.request(self.student2)
@@ -3451,9 +3508,25 @@ class TestCourseStudents(TestCase):
         self.assertTrue('requested_users' in response.context)
         self.assertTrue('rejected_users' in response.context)
 
+    def test_course_students_where_moderator_is_neither_creator_nor_teacher(
+            self):
+        self.client.login(
+            username=self.user2.username,
+            password=self.user2_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id,
+        })
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 404)
 
     def tearDown(self):
-        pass
+        self.user1.delete()
+        self.user2.delete()
+        self.student.delete()
+        self.student1.delete()
+        self.student2.delete()
+        self.user1_course.delete()
 
 
 class TestEnrollRequest(TestCase):
-- 
cgit 


From 9a8330b74c9ee0ddf8720a7326a699ba32922575 Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Sat, 9 May 2020 17:42:01 +0530
Subject: Fix pep8

 - cover missing tests.
---
 yaksh/test_views.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index 555f933..583aaa9 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -3172,7 +3172,8 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 302)
 
-    def test_enroll_reject_user_where_moderator_is_neither_creator_nor_teacher(self):
+    def test_enroll_reject_user_where_moderator_is_neither_creator_nor_teacher(
+            self):
         self.client.login(
             username=self.user2.username,
             password=self.user2_plaintext_pass
@@ -3183,6 +3184,17 @@ class TestCourseDetail(TestCase):
         response = self.client.post(url)
         self.assertEqual(response.status_code, 404)
 
+    def test_get_enroll_reject_user_view(self):
+        self.client.login(
+            username=self.user1.username,
+            password=self.user1_plaintext_pass
+        )
+        url = reverse('yaksh:enroll_reject_user', kwargs={
+            'course_id': self.user1_course.id,
+        })
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 302)
+
     def test_toggle_course_status_get(self):
         self.client.login(
             username=self.user1.username,
-- 
cgit 


From 99980a9523c6c8403328e68e78566e315bbf4c5e Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Sat, 9 May 2020 18:09:59 +0530
Subject: Fix tests

---
 yaksh/test_views.py | 2 --
 1 file changed, 2 deletions(-)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index 583aaa9..b2e62af 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -3005,7 +3005,6 @@ class TestCourseDetail(TestCase):
         })
         data = {
             'check': self.student1.id,
-            'enroll': ''
         }
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, 302)
@@ -3034,7 +3033,6 @@ class TestCourseDetail(TestCase):
         })
         data = {
             'check': self.student1.id,
-            'reject': ''
         }
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, 302)
-- 
cgit 


From bb21bbe9a38a9d3fc129716525514189ffc4bb7f Mon Sep 17 00:00:00 2001
From: CruiseDevice
Date: Sat, 9 May 2020 18:21:54 +0530
Subject: Add more tests for course_students view

---
 yaksh/test_views.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

(limited to 'yaksh/test_views.py')

diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index b2e62af..be0f7a3 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -3530,6 +3530,17 @@ class TestCourseStudents(TestCase):
         response = self.client.get(url)
         self.assertEqual(response.status_code, 404)
 
+    def test_course_students_where_user_is_not_moderator(self):
+        self.client.login(
+            username=self.student1,
+            password=self.student1_plaintext_pass
+        )
+        url = reverse('yaksh:course_students', kwargs={
+            'course_id': self.user1_course.id,
+        })
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 404)
+
     def tearDown(self):
         self.user1.delete()
         self.user2.delete()
-- 
cgit