def test_database_delete_by_id(tmpdir):
    file = tmpdir.join("test.db.json")
    file.write(UUID_FIXTURE_STR)
    db = Database().on(file.strpath)
    assert db.deleteById(UUID_FIXTURE["data"][0]["id"])
    assert not bool(len(db.get()))
    fixture = [
        {
            "name": "test",
            "getbyfield": "row1"
        },
        {
            "name": "test works!",
            "getbyfield": "row2"
        },
        {
            "name": "testing, so much fun .. yeah.",
            "getbyfield": "row3"
        },
    ]
    db.addMany(fixture)
    assert len(db.getAll()) == 3
    assert db.deleteById(db.get()[0]["id"])
    assert len(db.getAll()) == 2
    assert db.deleteById(db.get()[0]["id"])
    assert len(db.getAll()) == 1
    assert db.deleteById(db.get()[0]["id"])
    assert not bool(len(db.get()))
    with pytest.raises(IdNotFoundError):
        assert db.deleteById(20)
def test_database_add_many(tmpdir):
    file = tmpdir.join("test.db.json")
    file.write(EMPTY_FIXTURE_STR)
    db = Database().on(file.strpath)
    db.addMany([{"name": "test"}, {"name": "test2"}])
    data = db.getAll()
    assert len(data) == 2
    for d in data:
        assert uuid.UUID(d["id"])
def test_database_get_by(tmpdir):
    file = tmpdir.join("test.db.json")
    file.write(EMPTY_FIXTURE_STR)
    db = Database().on(file.strpath)
    fixture = [
        {"name": "test", "getbyfield": "row1"},
        {"name": "test works!", "getbyfield": "row2"},
        {"name": "testing, so much fun .. yeah.", "getbyfield": "row3"},
    ]
    db.addMany(fixture)
    assert len(db.getAll()) == 3
    assert db.getBy({"getbyfield": "row1"})[0]["name"] == fixture[0]["name"]
    assert db.getBy({"getbyfield": "row2"})[0]["name"] == fixture[1]["name"]
    assert db.getBy({"getbyfield": "row3"})[0]["name"] == fixture[2]["name"]