From 45ae640b0be6b21aba435a0e4117ac638910dbcb Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Tue, 12 Oct 2021 12:49:46 -0400 Subject: [PATCH] feat: add 'Client.entity' helper Proxy for 'google.cloud.datastore.entity.Entity'. --- google/cloud/datastore/client.py | 4 ++++ tests/unit/test_client.py | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/google/cloud/datastore/client.py b/google/cloud/datastore/client.py index b5de0fab..3607fffc 100644 --- a/google/cloud/datastore/client.py +++ b/google/cloud/datastore/client.py @@ -737,6 +737,10 @@ def key(self, *path_args, **kwargs): kwargs["namespace"] = self.namespace return Key(*path_args, **kwargs) + def entity(self, key=None, exclude_from_indexes=()): + """Proxy to :class:`google.cloud.datastore.entity.Entity`.""" + return Entity(key=key, exclude_from_indexes=exclude_from_indexes) + def batch(self): """Proxy to :class:`google.cloud.datastore.batch.Batch`.""" return Batch(self) diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py index 5127fd60..f4c27cf4 100644 --- a/tests/unit/test_client.py +++ b/tests/unit/test_client.py @@ -1335,6 +1335,30 @@ def test_key_w_namespace_collision(self): kind, id_, project=self.PROJECT, namespace=namespace2 ) + def test_entity_w_defaults(self): + creds = _make_credentials() + client = self._make_one(credentials=creds) + + patch = mock.patch("google.cloud.datastore.client.Entity", spec=["__call__"]) + with patch as mock_klass: + entity = client.entity() + self.assertIs(entity, mock_klass.return_value) + mock_klass.assert_called_once_with(key=None, exclude_from_indexes=()) + + def test_entity_w_explicit(self): + key = mock.Mock(spec=[]) + exclude_from_indexes = ["foo", "bar"] + creds = _make_credentials() + client = self._make_one(credentials=creds) + + patch = mock.patch("google.cloud.datastore.client.Entity", spec=["__call__"]) + with patch as mock_klass: + entity = client.entity(key, exclude_from_indexes) + self.assertIs(entity, mock_klass.return_value) + mock_klass.assert_called_once_with( + key=key, exclude_from_indexes=exclude_from_indexes + ) + def test_batch(self): creds = _make_credentials() client = self._make_one(credentials=creds)