Exemple #1
0
class TestRaceDB(unittest.TestCase):
    def setUp(self):
        self.race = json.load(open(os.path.join(DIR, 'race.json')))
        self.sample_path = os.path.join(DIR, 'sample.json')
        self.db = RaceDB(self.sample_path)

    def tearDown(self):
        os.remove(self.sample_path)

    def test__load(self):
        self.assertEqual(self.db.data, {"races": []}, "RaceDB should initialize empty")

    def test_add(self):
        for j in range(10):
            self.db.add(self.race)
            self.assertEqual(len(self.db.races), j + 1)

    def test_save(self):
        num_races = 10
        for j in range(num_races):
            self.db.add(self.race)
        new_db = RaceDB(self.sample_path)
        self.assertListEqual(new_db.races, self.db.races,
                             "A new database should contain all races the old one did")

    def test_existing_ids(self):
        existing_ids = self.db.existing_ids()
        new_id = self.db.add(self.race)
        self.assertTrue(new_id not in existing_ids, "Adding a race should add a unique id")
        self.assertTrue(new_id in self.db.existing_ids(),
                        "The new id should now be in existing_ids")

    def test_read(self):
        funky_race = dict(self.race.items()[:])
        funky_race["name"] = "This race was pretty funky"
        new_id = self.db.add(funky_race)
        recovered_race = self.db.read(new_id)
        for key, value in funky_race.iteritems():
            self.assertEqual(value, recovered_race.get(key))

        self.assertEqual(self.db.read(-1), {},
                         "Ids are positive, non reasonable ids return empty")

    def test_update(self):
        fun_fields = {"foo": "bar", "new stuff": "wooo", "name": "update old stuff"}
        new_id = self.db.add(self.race)
        race_v1 = self.db.read(new_id)
        for key, value in fun_fields.iteritems():
            self.assertNotEqual(value, race_v1.get(key), "Fields aren't in race yet")
        race_v2 = self.db.update(new_id, fun_fields)
        race_v3 = self.db.read(new_id)
        for key, value in fun_fields.iteritems():
            self.assertEqual(value, race_v2.get(key), "Fields are in race now")
            self.assertEqual(value, race_v3.get(key), "Even if we ask for a new copy")

    def test_delete(self):
        new_id = self.db.add(self.race)
        self.assertTrue(new_id in self.db.existing_ids())
        self.db.delete(new_id)
        self.assertFalse(new_id in self.db.existing_ids())
Exemple #2
0
 def setUp(self):
     self.race = json.load(open(os.path.join(DIR, 'race.json')))
     self.sample_path = os.path.join(DIR, 'sample.json')
     self.db = RaceDB(self.sample_path)
Exemple #3
0
def view_db(filename, race_id):
    race_id = int(race_id)
    db = RaceDB(filename)
    db.print_race(db.read(race_id))