def test_fetch_to_query(self, setup): from valarpy.model import Refs query = Refs.select().where(Refs.fetch_to_query(4)[0]) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query([4, 4])[0]) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query(Refs.id > 0)[0]) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query([Refs.id > 0])[0]) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query([Refs.id > 0, Refs.id > 1])[0]) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query([Refs.id > 10])[0]) assert [getattr(ref, "id", None) for ref in query] == [] query = Refs.select().where(Refs.fetch_to_query(Refs.fetch(4))) assert [getattr(ref, "id", None) for ref in query] == [4] query = Refs.select().where(Refs.fetch_to_query(4)) assert [getattr(ref, "id", None) for ref in query] == [4] # test AND wheres = Refs.fetch_to_query([Refs.id > 0, Refs.id > 10]) query = Refs.select() for where in wheres: query = query.where(where) assert [getattr(ref, "id", None) for ref in query] == [] # test bad queries with pytest.raises(TypeError): # noinspection PyTypeChecker Refs.fetch_to_query([lambda x: x]) with pytest.raises(TypeError): # noinspection PyTypeChecker Refs.fetch_to_query(lambda x: x)
def test_write_enable_disable(self): key = "test_write_enable_disable" with opened(CONFIG_DATA) as model: backend = model.conn.backend from valarpy.model import Refs try: # first, write is disabled ref = Refs(name=key) with pytest.raises(WriteNotEnabledError): ref.save() assert key not in {r.name for r in Refs.select()} # now enable write backend.enable_write() # saving should work ref.save() assert key in {r.name for r in Refs.select()} # now that we have a row, let's delete it # but first fail: disable write backend.disable_write() with pytest.raises(WriteNotEnabledError): ref.delete_instance() assert key in {r.name for r in Refs.select()} # we didn't delete the row because it errored # now re-enable write and delete the row backend.enable_write() ref.delete_instance() assert key not in {r.name for r in Refs.select()} finally: try: backend.enable_write() Refs.delete().where(Refs.name == key).execute() except Exception: # nosec pass finally: try: backend.disable_write() except Exception: # nosec pass
def test_query(self, setup): from valarpy.model import Refs refs = list(Refs.select()) assert [ref.name for ref in refs] == ["ref_four"]