示例#1
0
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()
示例#2
0
 def setUp(self):
     """Setup Engine with an associated DictionaryStore"""
     self.ds = DictionaryStore(Camper)
     self.engine = Engine(self.ds)
示例#3
0
 def setUp(self):
     self.ds = DictionaryStore(DummyModel)
示例#4
0
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))
示例#5
0
 def setUp(self):
     self.ds = DictionaryStore(Camper)