示例#1
0
    def test_db_building_create(self, init_sites):

        site_ids = init_sites
        building_db = BuildingDB()

        # check that database is empty
        result = building_db.get_all()
        assert list(result) == []

        # create an item
        building = Building('Building #0',
                            'BarRestaurant',
                            site_ids[0],
                            area=666)
        new_building_id = building_db.create(building)
        assert new_building_id is not None
        assert new_building_id == building.id

        # check that database is not empty now
        result = building_db.get_all()
        buildings = list(result)
        assert len(buildings) == 1
        assert buildings[0].id == building.id
        assert buildings[0].name == building.name
        assert buildings[0].description == building.description
        assert buildings[0].area == building.area
        assert buildings[0].site_id == building.site_id == site_ids[0]

        # error: invalid site
        # TODO: test this at `Thing` level ?
        building.site_id = generate_id()
        with pytest.raises(ValidationError) as exc:
            building_db.update(building.id, building)
        assert 'site_id' in exc.value.messages
示例#2
0
    def test_db_building_update_delete(self, init_buildings):

        building_ids = init_buildings
        building_db = BuildingDB()

        # get all items
        result = building_db.get_all()
        buildings = list(result)
        assert len(buildings) == 2
        for cur_building in buildings:
            assert cur_building.id in building_ids

        # get an item by its ID
        building = building_db.get_by_id(buildings[0].id)

        # update item data
        new_description = 'updated by patator'
        new_area = 999
        building.description = new_description
        building.area = new_area
        building_db.update(building.id, building)

        # check that item has really been updated in database
        updated_building = building_db.get_by_id(building.id)
        assert updated_building.id == building.id
        assert updated_building.name == building.name
        assert updated_building.description == new_description
        assert updated_building.area == new_area
        assert updated_building.site_id == building.site_id

        # delete an item by its ID
        building_db.remove(building.id)

        # get an item by its ID
        with pytest.raises(ItemNotFoundError):
            # it has been removed...
            building_db.get_by_id(building.id)