def main(): print("=== WELCOME TO CAMPERSHEAVEN ==") print() camper_store = DictionaryStore("campers", Camper) calendar_fkds = ForeignKeyDictionaryStore('camper_id', camper_store, 'calendars') calendar_store = DictionaryStore("calendars", Calendar, foreign_keys=[calendar_fkds]) engine = Engine(camper_store, calendar_store) print("Engine started...") print() with open("data/campers.json") as f: campers_data = f.read() with open("data/calendars.json") as f: calendars_data = f.read() with open("data/searches.json") as f: search_queries = f.read() print("New campers in sight...") engine.insert_data(campers_data) engine.insert_data(calendars_data) print("Searching for the right campers now...") print() search_results_json = engine.search(search_queries) with open('data/results.json', 'w+') as f, open('expected_results.json') as f_exp: indented_results = json.dumps(json.loads(search_results_json), indent=4) f.write(indented_results) f.write('\n') print(indented_results) f.seek(0) f_b = f.read() f_exp_b = f_exp.read() print(f_b) print(f_exp_b) assert f_b == f_exp_b print() print("=== GOOD BYE ===") print()
def setUp(self): """Setup Engine with an associated DictionaryStore""" self.ds = DictionaryStore(Camper) self.engine = Engine(self.ds)
def setUp(self): self.ds = DictionaryStore(DummyModel)
class TestDictionaryStore(unittest.TestCase): def setUp(self): self.ds = DictionaryStore(DummyModel) def test_upsert_data_one(self): item1 = {"id": 1, "val": "bla"} data = [item1] self.ds.upsert_data(data) self.assertDictEqual(self.ds.store, {1: DummyModel(**item1)}) def test_upsert_data_many(self): item1 = {"id": 1, "val": "bla"} item2 = {"id": 2, "val": "lab"} item3 = {"id": 3, "val": "alb"} data = [item1, item2, item3] self.ds.upsert_data(data) self.assertDictEqual( self.ds.store, { 1: DummyModel(**item1), 2: DummyModel(**item2), 3: DummyModel(**item3), }) def test_upsert_insert(self): item = {"id": 1, "val": "bla"} self.ds.upsert(item) self.assertEqual(DummyModel(**item), self.ds.store[item["id"]]) def test_upsert_update(self): item = {"id": 1, "val": "bla"} self.ds.upsert(item) changed_item = {"id": 1, "val": "lab"} self.ds.upsert(changed_item) self.assertEqual(DummyModel(**changed_item), self.ds.store[item["id"]]) def test_upsert_bad_row(self): item = {"id": 1, "lav": "bla"} with self.assertRaises(TypeError): self.ds.upsert(item) def test_filter_false(self): item1 = {"id": 1, "val": "bla"} item2 = {"id": 2, "val": "lab"} item3 = {"id": 3, "val": "alb"} data = [item1, item2, item3] self.ds.upsert_data(data) results = self.ds.filter(lambda item: False) self.assertListEqual(results, []) def test_filter_true(self): item1 = {"id": 1, "val": "bla"} item2 = {"id": 2, "val": "lab"} item3 = {"id": 3, "val": "alb"} data = [item1, item2, item3] self.ds.upsert_data(data) results = self.ds.filter(lambda item: True) self.assertTrue(all(asdict(item) in data for item in results)) def test_filter_by_field(self): item1 = {"id": 1, "val": "bla"} item2 = {"id": 2, "val": "lab"} item3 = {"id": 3, "val": "alb"} data = [item1, item2, item3] self.ds.upsert_data(data) results = self.ds.filter(lambda row: row.val == "bla" or row.id == 3) self.assertTrue(all( asdict(item) in [item1, item3] for item in results))
def setUp(self): self.ds = DictionaryStore(Camper)