def test_student_optional_full_update_positive(self): """Test successfully fully updating a student with optional params""" grade = sample_grade() classroom1 = sample_classroom() classroom2 = sample_classroom() classroom3 = sample_classroom() payload = sample_student_payload( fullname="Testonildo", active=False, departure_date='2010-10-10', guardian2='Mr. Guard', grade=grade.id, classes=[classroom1.id, classroom3.id]) res = self.client.put(student_detail_url(self.student.id), payload) self.student.refresh_from_db() payload.pop('classes') self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(Student.objects.get(**payload), self.student) self.assertEqual(self.student.guardian2, payload['guardian2']) self.assertEqual(self.student.grade, grade) self.assertIn(classroom1, self.student.classes.all()) self.assertIn(classroom3, self.student.classes.all()) self.assertNotIn(classroom2, self.student.classes.all()) serializer = StudentCreateSerializer(self.student) self.assertEqual(res.data, serializer.data)
def test_student_optional_create_positive(self): """Test successfully creating a student object with optional params""" grade = sample_grade() classroom1 = sample_classroom() classroom2 = sample_classroom() classroom3 = sample_classroom() payload = sample_student_payload( fullname="Testonildo", active=False, departure_date='2010-10-10', guardian2='Mr. Guard', grade=grade.id, classes=[classroom1.id, classroom3.id]) res = self.client.post(STUDENT_LIST_URL, payload) payload.pop('classes') self.assertEqual(res.status_code, status.HTTP_201_CREATED) student = Student.objects.filter(**payload) self.assertTrue(student.exists) student = student[0] serializer = StudentCreateSerializer(student) self.assertEqual(res.data, serializer.data) self.assertFalse(student.active) self.assertEqual(student.departure_date, str_to_date(payload['departure_date'])) self.assertEqual(student.guardian2, payload['guardian2']) self.assertEqual(student.grade, grade) self.assertIn(classroom1, student.classes.all()) self.assertIn(classroom3, student.classes.all()) self.assertNotIn(classroom2, student.classes.all())
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())
def setUp(self): self.client = APIClient() self.client.force_authenticate(sample_user()) self.classroom1 = sample_classroom() self.classroom2 = sample_classroom() self.classroom3 = sample_classroom() self.teacher1 = sample_teacher( fullname="Teacher 1", academic_level='Gr' ) self.teacher2 = sample_teacher( fullname="Teacher 2", academic_level='Ms' ) self.teacher3 = sample_teacher( fullname="Teacher 3", academic_level='Dr' ) self.teacher4 = sample_teacher( fullname="Teacher 4", academic_level='Dr', ) self.teacher5 = sample_teacher( fullname="Teacher 5", academic_level='Ms', active=False ) self.teacher1.classes.add(self.classroom1) self.teacher2.classes.add(self.classroom2) self.teacher3.classes.add(self.classroom3) self.teacher5.classes.add(self.classroom1)
def test_student_optional_partial_update_positive(self): """Test successful partial update of a student with optional params""" grade = sample_grade() classroom1 = sample_classroom() classroom2 = sample_classroom() classroom3 = sample_classroom() payload = { 'active': False, 'departure_date': '2010-10-10', 'guardian2': 'Mr. Guard', 'grade': grade.id, 'classes': [classroom1.id, classroom3.id] } res = self.client.patch(student_detail_url(self.student.id), payload) self.student.refresh_from_db() payload.pop('classes') self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(self.student.active, payload['active']) self.assertEqual(self.student.departure_date, str_to_date(payload['departure_date'])) self.assertEqual(self.student.guardian2, payload['guardian2']) self.assertEqual(self.student.grade, grade) self.assertIn(classroom1, self.student.classes.all()) self.assertIn(classroom3, self.student.classes.all()) self.assertNotIn(classroom2, self.student.classes.all()) serializer = StudentCreateSerializer(self.student) self.assertEqual(res.data, serializer.data)
def test_days_of_week(self): """Test the days_of_week field is a comma separated integer list""" classroom = sample_classroom(days_of_week='1,2,7') classroom.full_clean() classroom = sample_classroom(days_of_week='1,2,8') with self.assertRaises(ValidationError): classroom.full_clean()
def setUp(self): self.client = APIClient() self.client.force_authenticate(sample_user()) self.classroom1 = sample_classroom(name="Class1") self.classroom2 = sample_classroom(name="Class2") self.teacher = sample_teacher(fullname="The Teacher") self.teacher.classes.add(self.classroom1) self.teacher.classes.add(self.classroom2)
def test_retrive_classroom_list(self): """Test retriving the classroom list""" sample_classroom(name='CR 1', identifier='BC01') sample_classroom(name='CR 2', identifier='AB01', grade=sample_grade()) classrooms = Classroom.objects.all().order_by('identifier') serializer = ClassroomListSerializer(classrooms, many=True) res = self.client.get(CLASSROOM_LIST_URL) self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, serializer.data)
def test_string_representation(self): """Test the string representation of the model""" classroom = sample_classroom(name="Chemistry I", identifier="Q-001") self.assertEqual( str(classroom), classroom.identifier + ' - ' + classroom.name )
def test_retrieve_classroom_detail(self): """Test retriving the detail view of a classroom""" classroom = sample_classroom(name='Test', grade=sample_grade()) serializer = ClassroomDetailSerializer(classroom) res = self.client.get(classroom_detail_url(classroom.id)) self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, serializer.data)
def setUp(self): self.user = sample_user() self.client = APIClient() self.client.force_authenticate(self.user) self.grade1 = sample_grade() self.grade2 = sample_grade() self.grade3 = sample_grade() self.classroom1 = sample_classroom() self.classroom2 = sample_classroom() self.classroom3 = sample_classroom() self.student1 = sample_student( fullname='John Default', grade=self.grade1, ) self.student2 = sample_student( fullname='Jane Jeans', grade=self.grade2 ) self.student3 = sample_student( fullname='Dave Derik', active=False, grade=self.grade2 ) self.student4 = sample_student( fullname='Johna Default', grade=self.grade1 ) self.student5 = sample_student( fullname='Leon Daqui', grade=self.grade3 ) self.student1.classes.add(self.classroom2) self.student2.classes.add(self.classroom1) self.student3.classes.add(self.classroom2) self.student4.classes.add(self.classroom3) self.student1_serializer = StudentListSerializer(self.student1) self.student2_serializer = StudentListSerializer(self.student2) self.student3_serializer = StudentListSerializer(self.student3) self.student4_serializer = StudentListSerializer(self.student4) self.student5_serializer = StudentListSerializer(self.student5)
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)
def test_partial_update(self): """Test partially updating the a classroom object""" classroom = sample_classroom(name="Test CR", room='A45') payload = {'name': 'Other name', 'room': 'Other room'} res = self.client.patch(classroom_detail_url(classroom.id), payload) classroom.refresh_from_db() self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(classroom.name, payload['name']) self.assertEqual(classroom.room, payload['room'])
def test_full_update(self): """Test fully updating the a classroom object""" classroom = sample_classroom(name="Test CR", room='A45') payload = sample_classroom_payload(name="Other name", days_of_week='1', grade=sample_grade().id) res = self.client.put(classroom_detail_url(classroom.id), payload) classroom.refresh_from_db() self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(Classroom.objects.get(**payload), classroom)
def setUp(self): self.user = sample_user() self.client = APIClient() self.client.force_authenticate(self.user) self.grade = sample_grade() self.classroom = sample_classroom() self.student = sample_student(fullname='Le Studant', grade=self.grade) self.student.classes.add(self.classroom) self.serializer = StudentDetailSerializer(self.student)