コード例 #1
0
    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)
コード例 #2
0
    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
コード例 #3
0
    def test_query(self, setup):
        from valarpy.model import Refs

        refs = list(Refs.select())
        assert [ref.name for ref in refs] == ["ref_four"]