示例#1
0
    def setUp(self):
        self.user = UserFactory()

        self.classroom_1 = ClassroomFactory(created_by=self.user)
        self.classroom_2 = ClassroomFactory()
        self.classroom_3 = ClassroomFactory()

        self.enrollment_1 = EnrollmentFactory(classroom=self.classroom_2,
                                              student=self.user)
示例#2
0
    def test_classroom_model_creation(self):
        user = UserFactory()
        class_1 = ClassroomFactory(name='Astrophysics', created_by=user)
        class_2 = ClassroomFactory(name='Gravitational Mechanics',
                                   created_by=user)

        self.assertEqual(Classroom.objects.count(), 2)
        self.assertEqual(class_1.created_by, user)
        self.assertEqual(class_2.created_by, user)
        self.assertEqual(class_1.name, 'Astrophysics')
        self.assertEqual(class_2.name, 'Gravitational Mechanics')
示例#3
0
    def setUp(self):
        self.superuser = get_super_user()
        self.user_1 = UserFactory()
        self.user_2 = UserFactory()

        self.classroom_1 = ClassroomFactory()
        self.classroom_2 = ClassroomFactory()

        self.enrollment_1 = EnrollmentFactory(student=self.user_1,
                                              classroom=self.classroom_1)
        self.enrollment_2 = EnrollmentFactory(student=self.user_2,
                                              classroom=self.classroom_2)
示例#4
0
 def setUp(self):
     self.superuser = get_super_user()
     self.user = UserFactory()
     self.unauthorized_user = UserFactory()
     self.classroom = ClassroomFactory(created_by=self.user)
     self.enrollment = EnrollmentFactory(student=self.user,
                                         classroom=self.classroom)
示例#5
0
    def test_superuser_can_update_any_class(self):
        super_user = get_user_model().objects.create_superuser(
            username='******',
            email='*****@*****.**',
            password='******')
        user_1 = UserFactory()
        user_2 = UserFactory()
        class_1 = ClassroomFactory(created_by=user_1)
        class_2 = ClassroomFactory(created_by=user_2)

        self.assertTrue(class_1.can_update(super_user))
        self.assertTrue(class_1.can_update(user_1))
        self.assertFalse(class_1.can_update(user_2))

        self.assertTrue(class_2.can_update(super_user))
        self.assertFalse(class_2.can_update(user_1))
        self.assertTrue(class_2.can_update(user_2))
示例#6
0
class ClassroomUpdateTests(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.classroom = ClassroomFactory(created_by=self.user)

    def test_classroom_update_view_redirects_for_anonymous_user(self):
        response = self.client.get(self.classroom.get_update_url())
        no_response = self.client.get('/class/update/')

        self.assertEqual(response.status_code, 302)
        self.assertTemplateNotUsed(response,
                                   'classroom/classroom_update_form.html')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_update_works_for_logged_in_user(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_update_url())
        no_response = self.client.get('/class/update/')

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'Update')
        self.assertContains(response, 'name')
        self.assertContains(response, self.classroom.name)
        self.assertNotContains(response, 'Hi I should not be on this page!')
        self.assertTemplateUsed(response,
                                'classroom/classroom_update_form.html')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_update_resolve_classroomupdateview(self):
        view = resolve(self.classroom.get_update_url())
        self.assertEqual(view.func.__name__,
                         ClassroomUpdate.as_view().__name__)

    def test_classroom_update_with_valid_post_data_updates_existing_classroom(
            self):
        self.client.force_login(self.user)
        response = self.client.post(self.classroom.get_update_url(),
                                    data={'name': 'Learn Astronomy'})

        self.assertEqual(response.status_code, 302)
        self.assertEqual(Classroom.objects.count(), 1)
        messages = list(get_messages(response.wsgi_request))
        self.assertEqual(len(messages), 1)
        self.assertEqual(str(messages[0]),
                         "Learn Astronomy successfully updated!")
示例#7
0
    def test_only_a_user_who_created_a_class_can_update_it(self):
        user_1 = UserFactory()
        user_2 = UserFactory()
        class_1 = ClassroomFactory(created_by=user_1)
        class_2 = ClassroomFactory(created_by=user_2)

        self.assertTrue(class_1.can_update(user_1))
        self.assertFalse(class_1.can_update(user_2))

        self.assertFalse(class_2.can_update(user_1))
        self.assertTrue(class_2.can_update(user_2))
示例#8
0
class ClassroomDetailTests(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.classroom = ClassroomFactory()
        self.post_1 = PostFactory(classroom=self.classroom, author=self.user)
        self.post_2 = PostFactory(classroom=self.classroom, author=self.user)

    def test_classroom_detail_redirects_for_anonymous_or_logged_out_user(self):
        response = self.client.get(self.classroom.get_absolute_url())
        no_response = self.client.get('/classroom/123456/')

        self.assertEqual(response.status_code, 302)
        self.assertTemplateNotUsed(response, 'classroom/classroom_detail.html')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_detail_works_for_logged_in_user(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_absolute_url())
        no_response = self.client.get('/classroom/123456')

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'classroom/classroom_detail.html')
        self.assertContains(response, self.classroom.name)
        self.assertNotContains(response, 'Hi I should not be on this page!')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_detail_contains_post_model_form(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_absolute_url())

        self.assertIsInstance(response.context['form'], PostForm)

    def test_classroom_list_resolves_classroomlistview(self):
        view = resolve(self.classroom.get_absolute_url())
        self.assertEqual(view.func.__name__,
                         ClassroomDetailView.as_view().__name__)

    def test_classroom_detail_contains_all_posts_for_that_classroom(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_absolute_url())

        self.assertContains(response, self.post_1.title)
        self.assertContains(response, self.post_2.title)
示例#9
0
class ClassroomDeleteTests(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.classroom = ClassroomFactory(created_by=self.user)

    def test_classroom_delete_redirects_for_anonymous_user(self):
        response = self.client.get(self.classroom.get_delete_url())
        no_response = self.client.get('/classroom/123456/delete/')

        self.assertEqual(response.status_code, 302)
        self.assertTemplateNotUsed(response,
                                   'classroom/classroom_confirm_delete.html')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_delete_works_for_logged_in_user(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_delete_url())
        no_response = self.client.get('/classroom/123456/delete/')

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response,
                                'classroom/classroom_confirm_delete.html')
        self.assertContains(response, 'Delete')
        self.assertContains(response, 'Confirm')
        self.assertNotContains(response, 'Hi I should not be on this page!')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_delete_with_valid_post_data_deletes_the_classroom(self):
        self.client.force_login(self.user)
        response = self.client.post(self.classroom.get_delete_url())

        self.assertEqual(response.status_code, 302)
        self.assertEqual(Classroom.objects.count(), 0)

        messages = list(get_messages(response.wsgi_request))
        self.assertEqual(len(messages), 1)
        self.assertEqual(str(messages[0]), "Classroom successfully deleted!")

    def test_classroom_delete_resolves_classroomdeleteview(self):
        view = resolve(self.classroom.get_delete_url())
        self.assertEqual(view.func.__name__,
                         ClassroomDelete.as_view().__name__)
示例#10
0
    def setUp(self):
        self.super_user = get_user_model().objects.create_superuser(
            username='******',
            email='*****@*****.**',
            password='******')
        self.user_1 = UserFactory()
        self.user_2 = UserFactory()

        self.classroom_1 = ClassroomFactory()
        self.classroom_2 = ClassroomFactory()

        self.enroll_1 = EnrollmentFactory(student=self.user_1,
                                          classroom=self.classroom_1)
        self.enroll_2 = EnrollmentFactory(student=self.user_2,
                                          classroom=self.classroom_2)

        self.post_1 = PostFactory(author=self.user_1,
                                  classroom=self.classroom_1)
        self.post_2 = PostFactory(author=self.user_2,
                                  classroom=self.classroom_2)
示例#11
0
class ClassroomPeopleTests(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user_1 = UserFactory()
        self.user_2 = UserFactory()

        self.classroom = ClassroomFactory(created_by=self.user)

        self.enrollment_1 = EnrollmentFactory(classroom=self.classroom,
                                              student=self.user_1)
        self.enrollment_2 = EnrollmentFactory(classroom=self.classroom,
                                              student=self.user_2)

    def test_classroom_people_resolve_classroompeopleview(self):
        view = resolve(self.classroom.get_people_url())
        self.assertEqual(view.func.__name__,
                         ClassroomPeopleView.as_view().__name__)

    def test_classroom_people_redirects_for_logged_out_user(self):
        response = self.client.get(self.classroom.get_people_url())
        no_response = self.client.get('/classroom/1234/people/')

        self.assertEqual(response.status_code, 302)
        self.assertTemplateNotUsed(response, 'classroom/classroom_people.html')
        self.assertEqual(no_response.status_code, 404)

    def test_classroom_people_works_for_logged_in_user(self):
        self.client.force_login(self.user)
        response = self.client.get(self.classroom.get_people_url())
        no_response = self.client.get('/classroom/1243/people/')

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'classroom/classroom_people.html')
        self.assertContains(response, 'Classmates')
        self.assertContains(response, self.classroom.name)
        self.assertContains(response, self.user_1)
        self.assertContains(response, self.user_2)

        self.assertNotContains(response, 'Hi I should not be on this page!')
        self.assertEqual(no_response.status_code, 404)
示例#12
0
    def test_valid_enrollment_form_with_new_enrollment_sends_email(self):
        student = UserFactory()
        classroom = ClassroomFactory()

        code = str(classroom.id)
        form = EnrollmentForm({'code': code})

        self.assertTrue(form.is_valid())

        with self.assertLogs('classroom.forms', level='INFO') as cm:
            form.send_mail(student=student, classroom=classroom)

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Site message')
        self.assertGreaterEqual(len(cm.output), 1)
示例#13
0
 def setUp(self):
     self.user = UserFactory()
     self.classroom = ClassroomFactory()
     self.post_1 = PostFactory(classroom=self.classroom, author=self.user)
     self.post_2 = PostFactory(classroom=self.classroom, author=self.user)
示例#14
0
 def setUp(self):
     self.factory = RequestFactory()
     self.user = UserFactory()
     self.classroom = ClassroomFactory(created_by=self.user)
示例#15
0
    def test_only_the_user_who_created_a_classroom_can_update_it(self):
        user_1 = UserFactory()
        user_2 = UserFactory()
        class_1 = ClassroomFactory(created_by=user_1)
        class_2 = ClassroomFactory(created_by=user_1)
        class_3 = ClassroomFactory(created_by=user_2)

        self.assertEqual(Classroom.objects.count(), 3)
        self.assertTrue(class_1.can_update(user_1))
        self.assertTrue(class_2.can_update(user_1))
        self.assertTrue(class_3.can_update(user_2))

        self.assertFalse(class_1.can_update(user_2))
        self.assertFalse(class_2.can_update(user_2))
        self.assertFalse(class_3.can_update(user_1))