def test_update_score_invalid_exercise_id(self): """Ensure error is thrown if the exercise does not exist.""" add_score(998877, 65479, True) with self.client: response = self.client.put( '/scores/9', data=json.dumps(dict(exercise_id=65479, correct=True)), content_type='application/json', headers=dict(Authorization='Bearer test')) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) self.assertIn('Sorry. That score does not exist.', data['message']) self.assertIn('fail', data['status'])
def test_update_score(self): """Ensure an existing score can be updated in the database.""" add_score(998877, 65479, True) with self.client: response = self.client.put(f'/scores/65479', data=json.dumps({'correct': False}), content_type='application/json', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn('Score was updated!', data['message']) self.assertIn('success', data['status'])
def test_update_score_invalid_exercise_id(self): """Should create the score if it doesn't exist.""" add_score(998877, 65479, True) with self.client: response = self.client.put('/scores/9', data=json.dumps({'correct': False}), content_type='application/json', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 201) self.assertIn('New score was added!', data['message']) self.assertIn('success', data['status'])
def test_all_scores_by_user_id(self): """Ensure get all scores by user id behaves correctly.""" add_score(998877, 878778, True) with self.client: response = self.client.get( f'/scores/user', headers=dict(Authorization='Bearer test')) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual(len(data['data']['scores']), 1) self.assertEqual(998877, data['data']['scores'][0]['user_id']) self.assertEqual(878778, data['data']['scores'][0]['exercise_id']) self.assertTrue(data['data']['scores'][0]['correct']) self.assertTrue('created_at' in data['data']['scores'][0]) self.assertTrue('updated_at' in data['data']['scores'][0]) self.assertIn('success', data['status'])
def test_add_score(self): score = add_score(1, 1, True) self.assertTrue(score.id) self.assertEqual(score.user_id, 1) self.assertEqual(score.exercise_id, 1) self.assertTrue(score.created_at) self.assertTrue(score.updated_at)
def test_all_scores(self): """Ensure get all scores behaves correctly.""" add_score(1, 2, True) add_score(998877, 878778, False) with self.client: response = self.client.get('/scores') data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual(len(data['data']['scores']), 2) self.assertEqual(1, data['data']['scores'][0]['user_id']) self.assertEqual(2, data['data']['scores'][0]['exercise_id']) self.assertTrue(data['data']['scores'][0]['correct']) self.assertEqual(998877, data['data']['scores'][1]['user_id']) self.assertEqual(878778, data['data']['scores'][1]['exercise_id']) self.assertFalse(data['data']['scores'][1]['correct']) self.assertIn('success', data['status'])
def test_all_scores(self): """Ensure get all scores behaves correctly""" add_score(1, 11, True) add_score(2, 22, False) with self.client: response = self.client.get("/scores") data = json.loads(response.data.decode()) scores_data = data["data"]["scores"] self.assertEqual(response.status_code, 200) self.assertEqual(len(scores_data), 2) self.assertEqual(1, scores_data[0]["user_id"]) self.assertEqual(2, scores_data[1]["user_id"]) self.assertEqual(11, scores_data[0]["exercise_id"]) self.assertEqual(22, scores_data[1]["exercise_id"]) self.assertTrue(scores_data[0]["correct"]) self.assertFalse(scores_data[1]["correct"]) self.assertTrue("created_at" in scores_data[0]) self.assertTrue("created_at" in scores_data[1]) self.assertTrue("updated_at" in scores_data[0]) self.assertTrue("updated_at" in scores_data[1]) self.assertIn("success", data["status"])
def test_get_all_scores_by_user(self): """Ensure get all scores by user behaves correctly.""" add_score(33, 1, True) add_score(33, 2, True) add_score(33, 3, False) with self.client: response = self.client.get('/scores/user', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn('success', data['status']) self.assertEqual(len(data['data']['scores']), 3) self.assertEqual(1, data['data']['scores'][0]['exercise_id']) self.assertEqual(True, data['data']['scores'][0]['correct']) self.assertEqual(2, data['data']['scores'][1]['exercise_id']) self.assertEqual(True, data['data']['scores'][1]['correct']) self.assertEqual(3, data['data']['scores'][2]['exercise_id']) self.assertEqual(False, data['data']['scores'][2]['correct'])
def test_single_score(self): """Ensure get single score behaves correctly.""" score = add_score(88, 99, False) with self.client: response = self.client.get(f'/scores/{score.id}') data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual(88, data['data']['user_id']) self.assertEqual(99, data['data']['exercise_id']) self.assertFalse(data['data']['correct']) self.assertTrue('created_at' in data['data']) self.assertTrue('updated_at' in data['data']) self.assertIn('success', data['status'])
def test_upsert_score_update(self): """Ensure an existing score can be updated in the database.""" score = add_score(998877, 65479, True) with self.client: response = self.client.patch( f'/scores/{score.id}', data=json.dumps(dict(exercise_id=65479, correct=False)), content_type='application/json', headers=dict(Authorization='Bearer test')) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn('Score was updated!', data['message']) self.assertIn('success', data['status'])
def test_single_score_by_user_id(self): """Ensure get all scores by user id behaves correctly.""" score = add_score(998877, 65479, True) with self.client: response = self.client.get(f'/scores/user/{score.id}', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual(998877, data['data']['user_id']) self.assertEqual(65479, data['data']['exercise_id']) self.assertTrue(data['data']['correct']) self.assertIn('success', data['status'])
def test_update_score(self): add_score(1, 1, True) add_score(33, 1, True) add_score(33, 2, True) add_score(33, 3, False) with self.client: response = self.client.put('/scores/3', data=json.dumps({ 'correct': True, }), content_type='application/json', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual('Score updated', data['message']) self.assertIn('success', data['status'])
def test_get_single_score_of_user(self): """Ensure get single score by user behaves correctly.""" add_score(33, 1, True) add_score(33, 2, True) add_score(33, 3, False) with self.client: response = self.client.get('/scores/user/3', headers=({ 'Authorization': 'Bearer test' })) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn('success', data['status']) self.assertEqual(33, data['data']['user_id']) self.assertEqual(3, data['data']['exercise_id']) self.assertEqual(False, data['data']['correct'])
def test_add_score(self): score = add_score(1, 1, True) self.assertTrue(score.id) self.assertEqual(score.user_id, 1) self.assertEqual(score.exercise_id, 1) self.assertEqual(score.correct, True)