示例#1
0
 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'])
示例#2
0
 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'])
示例#3
0
 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'])
示例#4
0
 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'])
示例#5
0
 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)
示例#6
0
 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'])
示例#7
0
 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"])
示例#8
0
    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'])
示例#9
0
 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'])
示例#10
0
 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'])
示例#11
0
 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'])
示例#12
0
    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'])
示例#13
0
    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)