Example #1
0
    def test_get_competition_ranking_dardo(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('Dardo', False, 1).save_to_db()
                EntryModel('First', 100.00, 'm', 1).save_to_db()
                EntryModel('Last', 10.00, 'm', 1).save_to_db()
                EntryModel('Silver', 50.00, 'm', 1).save_to_db()
                r = c.get('/finish/Dardo')

                self.assertEqual(r.status_code, 200)
                self.assertEqual([{'atleta': 'First', 'value': 100.00, 'unidade': 'm'},
                    {'atleta': 'Silver', 'value': 50.00, 'unidade': 'm'},
                    {'atleta': 'Last', 'value': 10.00, 'unidade': 'm'}],
                    json.loads(r.data.decode('utf-8')))
Example #2
0
    def test_get_competition_ranking_100m(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                EntryModel('Bolt', 9.59, 's', 1).save_to_db()
                EntryModel('Lazy', 19.59, 's', 1).save_to_db()
                EntryModel('human', 12.59, 's', 1).save_to_db()
                r = c.get('/finish/100m')

                self.assertEqual(r.status_code, 200)
                self.assertEqual([{'atleta': 'Bolt', 'value': 9.59, 'unidade': 's'},
                    {'atleta': 'human', 'value': 12.59, 'unidade': 's'},
                    {'atleta': 'Lazy', 'value': 19.59, 'unidade': 's'}],
                    json.loads(r.data.decode('utf-8')))
Example #3
0
    def post(self, name):
        _entry = EntryModel.find_by_name(name)
        competition = CompetitionModel.find_by_name(name)
        if competition:
          if competition.isFinished:
            return {'message': "The competition '{}' is Finished! Can not accept more entries!".format(name)}

          competition_num_tries = competition.numTrys
        else:
          return {'message': "The competition '{}' doesen't exists.".format(name)}

        data = Entry.parser.parse_args()
        competition_id = CompetitionModel.find_competition_id(name)
        athlete_num_tries = EntryModel.find_athlete_tries(competition_id, data['atleta'])

        if _entry and athlete_num_tries and athlete_num_tries >= competition_num_tries:
            return {'message': "{} has reached the maximum number of attempts in {} competition.".format(data['atleta'], name)}, 500

        competition = CompetitionModel.find_by_name(name)
        entry = EntryModel(data['atleta'], data['value'], data['unidade'], competition.id)

        try:
            entry.save_to_db()
        except:
            return {"message": "An error occurred inserting the entry."}, 500

        return entry.json(), 201
Example #4
0
    def post(self, user_id):
        entry = EntryModel(user_id)
        try:
            entry.save_to_db()
        except:
            return {'message': 'An error occurred while creating the store.'}, 500

        return entry.json(), 201
Example #5
0
    def test_competition_relationship(self):
        with self.app_context():
            competition = CompetitionModel('test_competition', False, 1)
            entry = EntryModel('test', 19.99, 'm', 1)

            competition.save_to_db()
            entry.save_to_db()

            self.assertEqual(entry.competition.competicao, 'test_competition')
    def test_competition_relationship(self):
        with self.app_context():
            competition = CompetitionModel('test', False, 1)
            entry = EntryModel('test_entry', 19.99, 'm', 1)

            competition.save_to_db()
            entry.save_to_db()

            self.assertIsNotNone(competition.entrys[0])
            self.assertEqual(competition.entrys[0].atleta, 'test_entry')
Example #7
0
    def test_delete_entry(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                EntryModel('Bolt', 9.59, 's', 1).save_to_db()
                r = c.delete('/entry/100m')

                self.assertEqual(r.status_code, 200)
                self.assertDictEqual(d1={'message': 'Entry deleted'},
                                     d2=json.loads(r.data.decode('utf-8')))
Example #8
0
    def test_competition_with_entries_list(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                EntryModel('Bolt', 9.59, 's', 1).save_to_db()
                r = c.get('/competitions')

                self.assertDictEqual(d1={'competitions': [{'competicao': '100m',
                                    'entrys': [{'atleta': 'Bolt','unidade': 's','value': 9.59}],
                                    'isFinished': False,
                                    'numTrys': 1}]},
                                     d2=json.loads(r.data.decode('utf-8')))
    def test_create_entry(self):
        entry = EntryModel('test', 19.99, 'm', 1)

        self.assertEqual(entry.atleta, 'test',
                         "The name of the atlhete after creation does not equal the constructor argument.")
        self.assertEqual(entry.value, 19.99,
                         "The value of the entry after creation does not equal the constructor argument.")
        self.assertEqual(entry.unidade, 'm',
                         "The unit of the entry after creation does not equal the constructor argument.")
        self.assertEqual(entry.competition_id, 1,
                         "The competition_id of the entry after creation does not equal the constructor argument.")
        self.assertIsNone(entry.competition, "The entry's competition was not None even though the store was not created.")
    def test_entry_json(self):
        entry = EntryModel('test', 19.99, 'm', 1)
        expected = {
            'atleta': 'test',
            'value': 19.99,
            'unidade': 'm'
        }

        self.assertEqual(
            entry.json(),
            expected,
            "The JSON export of the entry is incorrect. Received {}, expected {}.".format(entry.json(), expected))
Example #11
0
    def test_entry_list_with_entry(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                EntryModel('Bolt', 9.59, 's', 1).save_to_db()
                r = c.get('/entrys')

                self.assertDictEqual(d1={
                    'entradas': [{
                        'atleta': 'Bolt',
                        'unidade': 's',
                        'value': 9.59
                    }]
                },
                                     d2=json.loads(r.data.decode('utf-8')))
Example #12
0
    def test_entry_found(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                EntryModel('Usain Bolt', 9.59, 's', 1).save_to_db()
                r = c.get('/entry/100m',
                          headers={'Authorization': self.auth_header})

                self.assertEqual(r.status_code, 200)
                self.assertDictEqual(d1={
                    '100m': [{
                        'atleta': 'Usain Bolt',
                        'unidade': 's',
                        'value': 9.59
                    }]
                },
                                     d2=json.loads(r.data.decode('utf-8')))
Example #13
0
    def get(self, qty):
        # Firstly, delete old entries
        while EntryModel.query.first():
            entry = EntryModel.query.first()
            db_session.delete(entry)
            db_session.commit()

        # Create some new entries for every method call
        for idx in range(qty):
            header = get_header(idx)
            publisher = get_publisher(idx)
            content = get_content(idx)
            link = get_link(idx)
            n_days_ago = get_num_days_ago(idx)
            img = get_base64_img(idx)
            entry = EntryModel(header, publisher, content, link, n_days_ago,
                               img)
            db_session.add(entry)
            db_session.commit()

        return EntryModel.query.limit(qty).all()
Example #14
0
    def test_crud(self):
        with self.app_context():
            competition = CompetitionModel('test', False, 1)
            competition.save_to_db()
            entry = EntryModel('test', 19.99, 'm', 1)

            self.assertIsNone(EntryModel.find_by_name('test').first(), "Found an entry with name 'test' before save_to_db")

            self.assertEqual(EntryModel.find_athlete_tries(1, 'test'), 0, "The number of tries for the athelte 'test' before save_to_db was not 0")


            entry.save_to_db()

            self.assertIsNotNone(EntryModel.find_by_name('test'),
                                 "Did not find an entry with name 'test' after save_to_db")

            self.assertEqual(EntryModel.find_athlete_tries(1, 'test'), 1, "The number of tries for the athelte 'test' after save_to_db was not 1")

            entry.delete_from_db()

            self.assertIsNone(EntryModel.find_by_name('test').first(), "Found an entry with name 'test' after delete_from_db")