def query_metadata():
        query = ndb.Query(kind=Namespace.KIND_NAME)
        results = query.fetch()

        names = [result.namespace_name for result in results]
        assert all(name in names
                   for name in ["_test_namespace_", "_test_namespace_2_"])
Exemple #2
0
def query_everything(**kwargs: Dict[str, Any]) -> Query:
    """Returns a query that targets every single entity in the datastore.

    IMPORTANT: DO NOT USE THIS FUNCTION OUTSIDE OF UNIT TESTS. Querying
    everything in the datastore is almost always a bad idea, ESPECIALLY in
    production. Always prefer querying for specific models and combining them
    afterwards.
    """
    return ndb.Query(**kwargs)
    def query_metadata():
        query = ndb.Query(kind=Property.KIND_NAME)
        results = query.fetch()

        properties = [
            result.property_name for result in results
            if result.kind_name == "AnyKind"
        ]
        assert properties == ["bar", "foo"]
Exemple #4
0
def ndb_client(datastore):
    client = ndb.Client()

    yield client

    # Now delete all entities.
    with client.context():
        for key in ndb.Query().iter(keys_only=True):
            key.delete_async()
Exemple #5
0
def test_cache_off_new_entity_created(dispose_of, client_context):
    """Regression test for #441

    https://github.com/googleapis/python-ndb/issues/441
    """
    class SomeKind(ndb.Model):
        foo = ndb.IntegerProperty()
        bar = ndb.StringProperty()

    somekind = SomeKind(foo=1)
    key = somekind.put()
    dispose_of(key._key)

    query = ndb.Query(kind="SomeKind")
    ourkind = query.get()
    ourkind.bar = "confusing"

    assert somekind.bar is None
Exemple #6
0
def test_cache_returns_entity_if_available(dispose_of, client_context):
    """Regression test for #441

    https://github.com/googleapis/python-ndb/issues/441
    """
    class SomeKind(ndb.Model):
        foo = ndb.IntegerProperty()
        bar = ndb.StringProperty()

    client_context.set_cache_policy(None)  # Use default

    somekind = SomeKind(foo=1)
    key = somekind.put()
    dispose_of(key._key)

    query = ndb.Query(kind="SomeKind")
    ourkind = query.get()
    ourkind.bar = "confusing"

    assert somekind.bar == "confusing"
Exemple #7
0
def test_kind_metadata(dispose_of):
    from google.cloud.ndb.metadata import Kind

    class AnyKind(ndb.Model):
        foo = ndb.IntegerProperty()

    class MyKind(ndb.Model):
        bar = ndb.StringProperty()

    entity1 = AnyKind(foo=1, id="x", namespace="_test_namespace_")
    entity1.put()
    dispose_of(entity1.key._key)

    entity2 = MyKind(bar="x", id="x", namespace="_test_namespace_")
    entity2.put()
    dispose_of(entity2.key._key)

    query = ndb.Query(kind=Kind.KIND_NAME, namespace="_test_namespace_")
    results = eventually(query.fetch, _length_at_least(2))

    kinds = [result.kind_name for result in results]
    assert all(kind in kinds for kind in ["AnyKind", "MyKind"]) != []
Exemple #8
0
def test_property_metadata(dispose_of):
    from google.cloud.ndb.metadata import Property

    # Why is this not necessary for Kind?
    Property._fix_up_properties()

    class AnyKind(ndb.Model):
        foo = ndb.IntegerProperty()
        bar = ndb.StringProperty()

    entity1 = AnyKind(foo=1, bar="x")
    entity1.put()
    dispose_of(entity1.key._key)

    query = ndb.Query(kind=Property.KIND_NAME)
    results = eventually(query.fetch, _length_at_least(2))

    properties = [
        result.property_name for result in results
        if result.kind_name == "AnyKind"
    ]
    assert properties == ["bar", "foo"]
Exemple #9
0
def test_namespace_metadata(dispose_of):
    from google.cloud.ndb.metadata import Namespace

    # Why is this not necessary for Kind?
    Namespace._fix_up_properties()

    class AnyKind(ndb.Model):
        foo = ndb.IntegerProperty()

    entity1 = AnyKind(foo=1, namespace="_test_namespace_")
    entity1.put()
    dispose_of(entity1.key._key)

    entity2 = AnyKind(foo=2, namespace="_test_namespace_2_")
    entity2.put()
    dispose_of(entity2.key._key)

    query = ndb.Query(kind=Namespace.KIND_NAME)
    results = eventually(query.fetch, _length_at_least(2))

    names = [result.namespace_name for result in results]
    assert (all(name in names
                for name in ["_test_namespace_", "_test_namespace_2_"]) != [])
 def query_metadata():
     query = ndb.Query(kind=Kind.KIND_NAME, namespace="_test_namespace_")
     results = query.fetch()
     kinds = [result.kind_name for result in results]
     assert all(kind in kinds for kind in ["AnyKind", "MyKind"])
Exemple #11
0
def query_everything(**kwargs):
    # type: (**Dict[str, Any]) -> ndb.Query
    """Returns a query that targets every single entity in the datastore."""
    return ndb.Query(**kwargs)