Ejemplo n.º 1
0
    def test_teacher_full_update_unauthenticated_negative(self):
        """Test an unauthenticated request cannot fully update teacher"""
        payload = sample_teacher_payload(fullname="Other Name")
        res = self.client.put(self.teacher_url, payload)

        self.assertEqual(res.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(Teacher.objects.get(id=self.teacher.id), self.teacher)
    def test_teacher_create_api_basic_positive(self):
        """Test successfully creating a basic teacher object"""
        payload = sample_teacher_payload(
            fullname="Teacher Tester",
            sex='F',
            birthdate='1990-02-27',
            email='*****@*****.**',
            academic_level='Dr',
            bank_agency=21421,
            bank_account=11117,
            monthly_payment=12412
        )
        res = self.client.post(TEACHER_LIST_URL, payload)

        self.assertEqual(res.status_code, status.HTTP_201_CREATED)

        teacher = Teacher.objects.filter(**payload)
        self.assertTrue(teacher.exists())

        teacher = teacher[0]
        serializer = TeacherCreateSerializer(teacher)
        self.assertEqual(res.data, serializer.data)

        self.assertTrue(teacher.active)
        self.assertFalse(teacher.classes.exists())
        self.assertEqual(teacher.register_date, dt.date.today())
    def test_teacher_create_api_optional_positive(self):
        """Test successfully creating a teacher object with optional params"""
        classroom1 = sample_classroom(name='Class1')
        classroom2 = sample_classroom(name='Class2')
        payload = sample_teacher_payload(
            fullname="Tester Teacher",
            active=False,
            departure_date='2010-10-01',
            classes=[classroom1.id, classroom2.id]
        )
        res = self.client.post(TEACHER_LIST_URL, payload)
        payload.pop('classes')

        self.assertEqual(res.status_code, status.HTTP_201_CREATED)

        teacher = Teacher.objects.filter(**payload)
        self.assertTrue(teacher.exists())

        teacher = teacher[0]
        serializer = TeacherCreateSerializer(teacher)
        self.assertEqual(res.data, serializer.data)

        self.assertFalse(teacher.active)
        self.assertEqual(
            teacher.departure_date,
            str_to_date(payload['departure_date'])
        )
        self.assertIn(classroom1, teacher.classes.all())
        self.assertIn(classroom2, teacher.classes.all())
Ejemplo n.º 4
0
    def test_teacher_full_update_illegal_operation_negative(self):
        """Test an illegal teacher full update operation is not performed"""
        teacher = sample_teacher(fullname="First Teacher")
        payload = sample_teacher_payload(id_doc=teacher.id_doc)
        res = self.client.put(self.teacher_url, payload)

        self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(Teacher.objects.get(id=self.teacher.id), self.teacher)
Ejemplo n.º 5
0
    def test_teacher_full_update_set_firstname_negative(self):
        """Test the teacher firstname cannot be set by a full update request"""
        payload = sample_teacher_payload(fullname="Peter Pan", firstname="Ott")
        res = self.client.put(self.teacher_url, payload)
        self.teacher.refresh_from_db()

        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertNotEqual(self.teacher.firstname, payload['firstname'])
        self.assertNotEqual(res.data['firstname'], payload['firstname'])
Ejemplo n.º 6
0
    def test_teacher_full_update_set_id_negative(self):
        """Test the teacher id cannot be set by a full update request"""
        payload = sample_teacher_payload(id=self.teacher.id + 1)
        res = self.client.put(self.teacher_url, payload)
        self.teacher.refresh_from_db()

        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertNotEqual(self.teacher.id, payload['id'])
        self.assertNotEqual(res.data['id'], payload['id'])
    def test_teacher_create_set_firstname_negative(self):
        """Test the teacher firstname cannot be set by the create request"""
        payload = sample_teacher_payload(fullname="Peter Pan", firstname="Ott")
        res = self.client.post(TEACHER_LIST_URL, payload)
        request_firstname = payload.pop('firstname')
        teacher = Teacher.objects.get(**payload)

        self.assertEqual(res.status_code, status.HTTP_201_CREATED)
        self.assertNotEqual(teacher.firstname, request_firstname)
        self.assertNotEqual(res.data['firstname'], request_firstname)
    def test_teacher_create_set_id_negative(self):
        """Test the teacher id cannot be set by the create request"""
        payload = sample_teacher_payload(id=99999)
        res = self.client.post(TEACHER_LIST_URL, payload)
        request_id = payload.pop('id')
        teacher = Teacher.objects.get(**payload)

        self.assertEqual(res.status_code, status.HTTP_201_CREATED)
        self.assertNotEqual(teacher.id, request_id)
        self.assertNotEqual(res.data['id'], request_id)
    def test_teacher_create_illegal_operation_negative(self):
        """Test an illegal create teacher operation is not performed"""
        teacher = sample_teacher(fullname="First Teacher")
        payload = sample_teacher_payload(
            fullname="Doppelganger",
            id_doc=teacher.id_doc
        )
        res = self.client.post(TEACHER_LIST_URL, payload)

        self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertFalse(Teacher.objects.filter(**payload).exists())
Ejemplo n.º 10
0
    def test_teacher_full_update_basic_positive(self):
        """Test successfully fully updating a teacher with basic information"""
        payload = sample_teacher_payload(fullname="Other Name",
                                         sex='F',
                                         birthdate='1996-01-30',
                                         email='*****@*****.**',
                                         academic_level='Ms',
                                         bank_agency=24214,
                                         bank_account=124312,
                                         monthly_payment=1900)
        res = self.client.put(self.teacher_url, payload)
        self.teacher.refresh_from_db()
        serializer = TeacherCreateSerializer(self.teacher)

        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(Teacher.objects.get(**payload), self.teacher)
        self.assertEqual(res.data, serializer.data)
Ejemplo n.º 11
0
    def test_teacher_full_update_optional_positive(self):
        """Test successfully fully updating a teacher with optional params"""
        classroom1 = sample_classroom(name="Class1")
        classroom2 = sample_classroom(name="Class2")
        payload = sample_teacher_payload(
            fullname="Other name",
            active=False,
            departure_date='2010-10-01',
            classes=[classroom1.id, classroom2.id])
        res = self.client.put(self.teacher_url, payload)
        payload.pop('classes')
        self.teacher.refresh_from_db()
        serializer = TeacherCreateSerializer(self.teacher)

        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(Teacher.objects.get(**payload), self.teacher)
        self.assertIn(classroom1, self.teacher.classes.all())
        self.assertIn(classroom2, self.teacher.classes.all())
        self.assertEqual(res.data, serializer.data)
Ejemplo n.º 12
0
    def test_teacher_full_update_invalid_payload_negative(self):
        """Test teacher cannot be fully updated with invalid payload"""
        payloads = [
            sample_teacher_payload(sex='U'),
            sample_teacher_payload(birthdate=dt.date.today() +
                                   dt.timedelta(days=1)),
            sample_teacher_payload(monthly_payment=99999999999999),
            sample_teacher_payload(academic_level='Aa'),
            sample_teacher_payload(bank_agency=-123),
            sample_teacher_payload(bank_account=-2144),
            sample_teacher_payload(classes=[99994])
        ]

        for payload in payloads:
            res = self.client.put(self.teacher_url, payload)
            payload.pop('classes', None)

            self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
            self.assertEqual(Teacher.objects.get(id=self.teacher.id),
                             self.teacher)
    def test_teacher_create_invalid_payload_negative(self):
        """Test an invalid payload request does not create a teacher object"""
        payloads = [
            sample_teacher_payload(sex='U'),
            sample_teacher_payload(
                birthdate=dt.date.today() + dt.timedelta(days=1)
            ),
            sample_teacher_payload(monthly_payment=99999999999999),
            sample_teacher_payload(academic_level='Aa'),
            sample_teacher_payload(bank_agency=-123),
            sample_teacher_payload(bank_account=-2144),
            sample_teacher_payload(classes=[99994])
        ]

        for payload in payloads:
            res = self.client.post(TEACHER_LIST_URL, payload)
            payload.pop('classes', None)

            self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
            self.assertFalse(Teacher.objects.filter(**payload).exists())
    def test_teacher_create_unathenticated_forbidden(self):
        """Test an unathenticated request cannot create a teacher object"""
        payload = sample_teacher_payload()
        res = APIClient().post(TEACHER_LIST_URL, payload)

        self.assertEqual(res.status_code, status.HTTP_403_FORBIDDEN)