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_"])
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"]
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()
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
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"
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"]) != []
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"]
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"])
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)