def test_implicit_connection(self): from gcloud.datastore._testing import _monkey_defaults from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') key = entity.key = _Key(_DATASET) with _monkey_defaults(connection=connection): # Set up Batch on stack so we can check it is used. with _NoCommitBatch(_DATASET, connection) as CURR_BATCH: result = self._callFUT(entity) self.assertEqual(result, None) self.assertEqual(len(CURR_BATCH.mutation.insert_auto_id), 0) self.assertEqual(len(CURR_BATCH.mutation.upsert), 1) upserts = list(CURR_BATCH.mutation.upsert) self.assertEqual(len(upserts), 1) self.assertEqual(upserts[0].key, key.to_protobuf()) properties = list(upserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertEqual(len(CURR_BATCH.mutation.delete), 0)
def test_no_dataset_id(self): from gcloud.datastore import _implicit_environ from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') entity.key = _Key(_DATASET) self.assertEqual(_implicit_environ.get_default_connection(), None) result = self._callFUT([entity], connection=connection) self.assertEqual(result, None) self.assertEqual(len(connection._committed), 1) dataset_id, mutation = connection._committed[0] self.assertEqual(dataset_id, _DATASET) upserts = list(mutation.upsert) self.assertEqual(len(upserts), 1) self.assertEqual(upserts[0].key, entity.key.to_protobuf()) properties = list(upserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar')
def test_put_multi_no_batch_w_partial_key(self): from gcloud.datastore.helpers import _property_tuples from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key from gcloud.datastore.test_batch import _KeyPB entity = _Entity(foo=u'bar') key = entity.key = _Key(self.PROJECT) key._id = None creds = object() client = self._makeOne(credentials=creds) client.connection._commit.append([_KeyPB(key)]) result = client.put_multi([entity]) self.assertTrue(result is None) self.assertEqual(len(client.connection._commit_cw), 1) (project, commit_req, transaction_id) = client.connection._commit_cw[0] self.assertEqual(project, self.PROJECT) inserts = list(commit_req.mutation.insert_auto_id) self.assertEqual(len(inserts), 1) self.assertEqual(inserts[0].key, key.to_protobuf()) prop_list = list(_property_tuples(inserts[0])) self.assertTrue(len(prop_list), 1) name, value_pb = prop_list[0] self.assertEqual(name, 'foo') self.assertEqual(value_pb.string_value, u'bar') self.assertTrue(transaction_id is None)
def test_put_multi_no_batch_w_partial_key(self): from gcloud.datastore.helpers import _property_tuples from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key from gcloud.datastore.test_batch import _KeyPB from gcloud.datastore.test_batch import _mutated_pb entity = _Entity(foo=u"bar") key = entity.key = _Key(self.PROJECT) key._id = None creds = object() client = self._makeOne(credentials=creds) client.connection._commit.append([_KeyPB(key)]) result = client.put_multi([entity]) self.assertTrue(result is None) self.assertEqual(len(client.connection._commit_cw), 1) (project, commit_req, transaction_id) = client.connection._commit_cw[0] self.assertEqual(project, self.PROJECT) mutated_entity = _mutated_pb(self, commit_req.mutations, "insert") self.assertEqual(mutated_entity.key, key.to_protobuf()) prop_list = list(_property_tuples(mutated_entity)) self.assertTrue(len(prop_list), 1) name, value_pb = prop_list[0] self.assertEqual(name, "foo") self.assertEqual(value_pb.string_value, u"bar") self.assertTrue(transaction_id is None)
def test_implicit_connection(self): from gcloud._testing import _Monkey from gcloud.datastore import _implicit_environ from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') key = entity.key = _Key(_DATASET) with _Monkey(_implicit_environ, CONNECTION=connection): # Set up Batch on stack so we can check it is used. with _NoCommitBatch(_DATASET, connection) as CURR_BATCH: result = self._callFUT([entity]) self.assertEqual(result, None) self.assertEqual(len(CURR_BATCH.mutation.insert_auto_id), 0) self.assertEqual(len(CURR_BATCH.mutation.upsert), 1) upserts = list(CURR_BATCH.mutation.upsert) self.assertEqual(len(upserts), 1) self.assertEqual(upserts[0].key, key.to_protobuf()) properties = list(upserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertEqual(len(CURR_BATCH.mutation.delete), 0)
def test_put_multi_no_batch_w_partial_key(self): from gcloud.datastore.helpers import _property_tuples from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key from gcloud.datastore.test_batch import _KeyPB entity = _Entity(foo=u'bar') key = entity.key = _Key(self.DATASET_ID) key._id = None creds = object() client = self._makeOne(credentials=creds) client.connection._commit.append([_KeyPB(key)]) result = client.put_multi([entity]) self.assertTrue(result is None) self.assertEqual(len(client.connection._commit_cw), 1) (dataset_id, commit_req, transaction_id) = client.connection._commit_cw[0] self.assertEqual(dataset_id, self.DATASET_ID) inserts = list(commit_req.mutation.insert_auto_id) self.assertEqual(len(inserts), 1) self.assertEqual(inserts[0].key, key.to_protobuf()) prop_list = list(_property_tuples(inserts[0])) self.assertTrue(len(prop_list), 1) name, value_pb = prop_list[0] self.assertEqual(name, 'foo') self.assertEqual(value_pb.string_value, u'bar') self.assertTrue(transaction_id is None)
def test_no_batch_w_partial_key(self): from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') key = entity.key = _Key(_DATASET) key._id = None result = self._callFUT([entity], connection=connection, dataset_id=_DATASET) self.assertEqual(result, None) self.assertEqual(len(connection._committed), 1) dataset_id, mutation, transaction_id = connection._committed[0] self.assertEqual(dataset_id, _DATASET) inserts = list(mutation.insert_auto_id) self.assertEqual(len(inserts), 1) self.assertEqual(inserts[0].key, key.to_protobuf()) properties = list(inserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertTrue(transaction_id is None)
def test_put_multi_no_batch_w_partial_key(self): from gcloud.datastore.test_batch import _CommitResult from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key entity = _Entity(foo=u'bar') key = entity.key = _Key(self.DATASET_ID) key._id = None creds = object() client = self._makeOne(credentials=creds) client.connection._commit.append(_CommitResult(key)) result = client.put_multi([entity]) self.assertTrue(result is None) self.assertEqual(len(client.connection._commit_cw), 1) dataset_id, mutation, transaction_id = client.connection._commit_cw[0] self.assertEqual(dataset_id, self.DATASET_ID) inserts = list(mutation.insert_auto_id) self.assertEqual(len(inserts), 1) self.assertEqual(inserts[0].key, key.to_protobuf()) properties = list(inserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertTrue(transaction_id is None)
def test_no_dataset_id(self): from gcloud.datastore import _implicit_environ from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') entity.key = _Key(_DATASET) self.assertEqual(_implicit_environ.get_default_connection(), None) result = self._callFUT([entity], connection=connection) self.assertEqual(result, None) self.assertEqual(len(connection._committed), 1) dataset_id, mutation, transaction_id = connection._committed[0] self.assertEqual(dataset_id, _DATASET) upserts = list(mutation.upsert) self.assertEqual(len(upserts), 1) self.assertEqual(upserts[0].key, entity.key.to_protobuf()) properties = list(upserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertTrue(transaction_id is None)
def test_no_connection(self): from gcloud.datastore import _implicit_environ from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' entity = _Entity(foo=u'bar') entity.key = _Key(_DATASET) self.assertEqual(_implicit_environ.CONNECTION, None) with self.assertRaises(ValueError): self._callFUT([entity])
def test_no_connection(self): from gcloud.datastore import _implicit_environ from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' entity = _Entity(foo=u'bar') entity.key = _Key(_DATASET) self.assertEqual(_implicit_environ.get_default_connection(), None) with self.assertRaises(EnvironmentError): self._callFUT([entity], dataset_id=_DATASET)
def test_put_multi_existing_batch_w_completed_key(self): from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key creds = object() client = self._makeOne(credentials=creds) entity = _Entity(foo=u'bar') key = entity.key = _Key(self.DATASET_ID) with _NoCommitBatch(client) as CURR_BATCH: result = client.put_multi([entity]) self.assertEqual(result, None) self.assertEqual(len(CURR_BATCH.mutation.insert_auto_id), 0) upserts = list(CURR_BATCH.mutation.upsert) self.assertEqual(len(upserts), 1) self.assertEqual(upserts[0].key, key.to_protobuf()) properties = list(upserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar') self.assertEqual(len(CURR_BATCH.mutation.delete), 0)
def test_put_multi_existing_batch_w_completed_key(self): from gcloud.datastore.helpers import _property_tuples from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key from gcloud.datastore.test_batch import _mutated_pb creds = object() client = self._makeOne(credentials=creds) entity = _Entity(foo=u'bar') key = entity.key = _Key(self.PROJECT) with _NoCommitBatch(client) as CURR_BATCH: result = client.put_multi([entity]) self.assertEqual(result, None) mutated_entity = _mutated_pb(self, CURR_BATCH.mutations, 'upsert') self.assertEqual(mutated_entity.key, key.to_protobuf()) prop_list = list(_property_tuples(mutated_entity)) self.assertTrue(len(prop_list), 1) name, value_pb = prop_list[0] self.assertEqual(name, 'foo') self.assertEqual(value_pb.string_value, u'bar')
def test_put_multi_existing_batch_w_completed_key(self): from gcloud.datastore.helpers import _property_tuples from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key from gcloud.datastore.test_batch import _mutated_pb creds = object() client = self._makeOne(credentials=creds) entity = _Entity(foo=u"bar") key = entity.key = _Key(self.PROJECT) with _NoCommitBatch(client) as CURR_BATCH: result = client.put_multi([entity]) self.assertEqual(result, None) mutated_entity = _mutated_pb(self, CURR_BATCH.mutations, "upsert") self.assertEqual(mutated_entity.key, key.to_protobuf()) prop_list = list(_property_tuples(mutated_entity)) self.assertTrue(len(prop_list), 1) name, value_pb = prop_list[0] self.assertEqual(name, "foo") self.assertEqual(value_pb.string_value, u"bar")
def test_no_batch_w_partial_key(self): from gcloud.datastore.test_batch import _Connection from gcloud.datastore.test_batch import _Entity from gcloud.datastore.test_batch import _Key # Build basic mocks needed to delete. _DATASET = 'DATASET' connection = _Connection() entity = _Entity(foo=u'bar') key = entity.key = _Key(_DATASET) key._id = None result = self._callFUT([entity], connection=connection) self.assertEqual(result, None) self.assertEqual(len(connection._committed), 1) dataset_id, mutation = connection._committed[0] self.assertEqual(dataset_id, _DATASET) inserts = list(mutation.insert_auto_id) self.assertEqual(len(inserts), 1) self.assertEqual(inserts[0].key, key.to_protobuf()) properties = list(inserts[0].property) self.assertEqual(properties[0].name, 'foo') self.assertEqual(properties[0].value.string_value, u'bar')