def test_remove_students_from_course(self): set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) res = self.app.put('/api/v1/course/1', data=dict(remove_student_ids="1"), headers=self.token) self.assertEqual(204, res.status_code)
def test_delete_teacher(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) res = self.app.delete('/api/v1/teacher/1', data=dict(first_name='Jon', last_name='Doe', email='*****@*****.**'), headers=self.token) self.assertEqual(204, res.status_code)
def test_delete_student(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) res = self.app.delete('/api/v1/student/1', data=dict(first_name='Jon', last_name='Doe', email='*****@*****.**'), headers=self.token) self.assertEqual(204, res.status_code)
def test_create_a_new_grade_for_non_existent_student(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.post('/api/v1/grade/student/999/course/1/100', headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__()) self.assertIn('999', err.exception.__repr__())
def test_delete_non_exist_student(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.delete('/api/v1/student/9999', data=dict(first_name='Jon', last_name='Doe', email='*****@*****.**'), headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__())
def test_create_teacher_bad_email_address(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) with self.assertRaises(BadRequestError) as err: res = self.app.post('/api/v1/teacher', data=dict(first_name='Jon', last_name='Doe', email='1212'), headers=self.token) self.assertIn('BadRequestError', err.exception.__repr__())
def test_update_non_exist_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_3_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.put('/api/v1/course/999', data=dict(student_ids="3"), headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__()) self.assertIn('999', err.exception.__repr__())
def test_delete_non_exist_teacher(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.delete('/api/v1/teacher/9999', data=dict(first_name='Jon', last_name='Doe', email='*****@*****.**'), headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__())
def test_create_student_bad_email_address(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) with self.assertRaises(BadRequestError) as err: res = self.app.post('/api/v1/student', data=dict(first_name='Jon', last_name='Doe', email='1212'), headers=self.token) self.assertIn('BadRequestError', err.exception.__repr__())
def test_get_a_grade_for_a_student_in_a_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_3_STUDENT_1) res = self.app.get('/api/v1/grade/student/1/course/2', headers=self.token) data = json.loads(res.data.decode('utf-8')) self.assertEqual(200, res.status_code) self.assertEqual(1, len(data))
def test_get_all_grades_for_one_course(self): set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_3_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_2) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_3) res = self.app.get('/api/v1/grade/course/3', headers=self.token) data = json.loads(res.data.decode('utf-8')) self.assertEqual(200, res.status_code) self.assertEqual(3, len(data))
def test_add_students_to_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_3_INS) set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) res = self.app.put('/api/v1/course/1', data=dict(student_ids="3"), headers=self.token) self.assertEqual(204, res.status_code)
def test_create_new_course_teacher_not_exist(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.post('/api/v1/course', data=dict(name='Super Course', teacher_id='1', student_ids="1, 2"), headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__())
def test_get_a_grade_for_a_non_existent_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_3_STUDENT_1) with self.assertRaises(EntityNotFound) as err: res = self.app.get('/api/v1/grade/course/999', headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__()) self.assertIn('999', err.exception.__repr__()) self.assertIn('course_entity_id', err.exception.__repr__()) self.assertNotIn('student_entity_id', err.exception.__repr__())
def test_add_non_existent_students_to_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.put('/api/v1/course/1', data=dict(student_ids="3"), headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__()) self.assertIn('[3]', err.exception.__repr__())
def test_update_a_grade(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) res = self.app.put('/api/v1/grade/student/1/course/1/100', headers=self.token) self.assertEqual(204, res.status_code)
def test_create_an_existing_grade(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) with self.assertRaises(EntityAlreadyExistsError) as err: res = self.app.post('/api/v1/grade/student/1/course/1/100', headers=self.token) self.assertIn('EntityAlreadyExistsError', err.exception.__repr__())
def test_create_new_course(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) res = self.app.post('/api/v1/course', data=dict(name='Super Course', teacher_id='1', student_ids="1, 2"), headers=self.token) data = json.loads(res.data.decode('utf-8')) self.assertEqual(201, res.status_code) self.assertDictEqual(data, DataCourse.TEST_COURSE_1)
def test_get_teacher(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) res = self.app.get('/api/v1/teacher/1', headers=self.token) data = json.loads(res.data.decode('utf-8')) self.assertEqual(200, res.status_code) self.assertDictEqual(data[0], DataTeacher.TEST_TEACHER_1)
def setUpClass(cls): super().setUpClass() set_test_database_data('users', DataApi.API_TOKEN)
def test_delete_a_grade(self): set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) res = self.app.delete('/api/v1/grade/student/1/course/1', headers=self.token) self.assertEqual(204, res.status_code)
def test_delete_course(self): set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) res = self.app.delete('/api/v1/course/1', headers=self.token) self.assertEqual(204, res.status_code)
def test_calculated_max_students(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_3_INS) set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) set_test_database_data('teachers', DataTeacher.TEST_TEACHER_2_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_2_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_3_INS) res = self.app.get('api/v1/teacher/max_students', headers=self.token) self.assertEqual(200, res.status_code) data = json.loads(res.data.decode('utf-8')) self.assertEqual(data['name'], DataCourse.TEST_COURSE_3_INS['name'])
def test_calculated_highest_avg(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_2_INS) set_test_database_data('students', DataStudent.TEST_STUDENT_3_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_2_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_3_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_3_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_2) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_2) res = self.app.get('api/v1/student/highest_avg', headers=self.token) self.assertEqual(200, res.status_code) data = json.loads(res.data.decode('utf-8')) self.assertDictEqual(data, DataStudent.TEST_STUDENT_SMARTEST)
def test_update_student_without_id(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) res = self.app.put('/api/v1/student', data=dict(first_name='Jon', email='*****@*****.**'), headers=self.token) self.assertEqual(501, res.status_code)
def test_get_course(self): set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) res = self.app.get('/api/v1/course/1', headers=self.token) data = json.loads(res.data.decode('utf-8')) self.assertEqual(200, res.status_code) self.assertDictEqual(data[0], DataCourse.TEST_COURSE_1)
def test_create_a_new_grade(self): set_test_database_data('students', DataStudent.TEST_STUDENT_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) res = self.app.post('/api/v1/grade/student/1/course/1/100', headers=self.token) self.assertEqual(201, res.status_code)
def test_get_non_existent_teacher(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) with self.assertRaises(EntityNotFound) as err: res = self.app.get('/api/v1/teacher/9999', headers=self.token) self.assertIn('EntityNotFound', err.exception.__repr__())
def test_update_teacher_without_id(self): set_test_database_data('teachers', DataTeacher.TEST_TEACHER_1_INS) res = self.app.put('/api/v1/teacher', data=dict(first_name='Jon', email='*****@*****.**'), headers=self.token) self.assertEqual(501, res.status_code)
def test_calculated_easiest_class(self): set_test_database_data('courses', DataCourse.TEST_COURSE_1_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_2_INS) set_test_database_data('courses', DataCourse.TEST_COURSE_3_INS) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_3_STUDENT_1) set_test_database_data('grades', DataGrade.TEST_GRADE_1_STUDENT_2) set_test_database_data('grades', DataGrade.TEST_GRADE_2_STUDENT_2) res = self.app.get('api/v1/course/easiest', headers=self.token) self.assertEqual(200, res.status_code) data = json.loads(res.data.decode('utf-8')) self.assertDictEqual(data, DataCourse.TEST_COURSE_EASIEST)