diff --git a/google/cloud/datastore/client.py b/google/cloud/datastore/client.py index 4793e059..207759cc 100644 --- a/google/cloud/datastore/client.py +++ b/google/cloud/datastore/client.py @@ -738,6 +738,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)