@@ -46,6 +46,7 @@ def test_ctor_explicit(self):
4646 self .assertEqual (batch .dataset_id , _DATASET )
4747 self .assertEqual (batch .connection , connection )
4848 self .assertTrue (isinstance (batch .mutation , Mutation ))
49+ self .assertEqual (batch ._auto_id_entities , [])
4950
5051 def test_ctor_implicit (self ):
5152 from gcloud ._testing import _Monkey
@@ -62,6 +63,28 @@ def test_ctor_implicit(self):
6263 self .assertEqual (batch .dataset_id , DATASET_ID )
6364 self .assertEqual (batch .connection , CONNECTION )
6465 self .assertTrue (isinstance (batch .mutation , Mutation ))
66+ self .assertEqual (batch ._auto_id_entities , [])
67+
68+ def test_add_auto_id_entity_w_partial_key (self ):
69+ _DATASET = 'DATASET'
70+ connection = _Connection ()
71+ batch = self ._makeOne (dataset_id = _DATASET , connection = connection )
72+ entity = _Entity ()
73+ key = entity .key = _Key (_Entity )
74+ key ._partial = True
75+
76+ batch .add_auto_id_entity (entity )
77+
78+ self .assertEqual (batch ._auto_id_entities , [entity ])
79+
80+ def test_add_auto_id_entity_w_completed_key (self ):
81+ _DATASET = 'DATASET'
82+ connection = _Connection ()
83+ batch = self ._makeOne (dataset_id = _DATASET , connection = connection )
84+ entity = _Entity ()
85+ entity .key = _Key (_Entity )
86+
87+ self .assertRaises (ValueError , batch .add_auto_id_entity , entity )
6588
6689 def test_put_entity_wo_key (self ):
6790 _DATASET = 'DATASET'
@@ -70,7 +93,23 @@ def test_put_entity_wo_key(self):
7093
7194 self .assertRaises (ValueError , batch .put , _Entity ())
7295
73- def test_put_entity_w_key (self ):
96+ def test_put_entity_w_partial_key (self ):
97+ _DATASET = 'DATASET'
98+ _PROPERTIES = {'foo' : 'bar' }
99+ connection = _Connection ()
100+ batch = self ._makeOne (dataset_id = _DATASET , connection = connection )
101+ entity = _Entity (_PROPERTIES )
102+ key = entity .key = _Key (_DATASET )
103+ key ._partial = True
104+
105+ batch .put (entity )
106+
107+ self .assertEqual (
108+ connection ._saved ,
109+ (_DATASET , key ._key , _PROPERTIES , (), batch .mutation ))
110+ self .assertEqual (batch ._auto_id_entities , [entity ])
111+
112+ def test_put_entity_w_completed_key (self ):
74113 _DATASET = 'DATASET'
75114 _PROPERTIES = {'foo' : 'bar' }
76115 connection = _Connection ()
@@ -114,6 +153,22 @@ def test_commit(self):
114153
115154 self .assertEqual (connection ._committed , (_DATASET , batch .mutation ))
116155
156+ def test_commit_w_auto_id_entities (self ):
157+ _DATASET = 'DATASET'
158+ _NEW_ID = 1234
159+ connection = _Connection (_NEW_ID )
160+ batch = self ._makeOne (dataset_id = _DATASET , connection = connection )
161+ entity = _Entity ({})
162+ key = entity .key = _Key (_DATASET )
163+ key ._partial = True
164+ batch ._auto_id_entities .append (entity )
165+
166+ batch .commit ()
167+
168+ self .assertEqual (connection ._committed , (_DATASET , batch .mutation ))
169+ self .assertFalse (key ._partial )
170+ self .assertEqual (key ._id , _NEW_ID )
171+
117172 def test_as_context_mgr_wo_error (self ):
118173 _DATASET = 'DATASET'
119174 _PROPERTIES = {'foo' : 'bar' }
@@ -154,16 +209,28 @@ def test_as_context_mgr_w_error(self):
154209class _CommitResult (object ):
155210
156211 def __init__ (self , * new_keys ):
157- self .insert_auto_id_key = new_keys
212+ self .insert_auto_id_key = [_KeyPB (key ) for key in new_keys ]
213+
214+
215+ class _PathElementPB (object ):
216+
217+ def __init__ (self , id ):
218+ self .id = id
219+
220+
221+ class _KeyPB (object ):
222+
223+ def __init__ (self , id ):
224+ self .path_element = [_PathElementPB (id )]
158225
159226
160227class _Connection (object ):
161228 _marker = object ()
162229 _committed = _saved = _deleted = None
163230 _save_result = (False , None )
164231
165- def __init__ (self ):
166- self ._commit_result = _CommitResult ()
232+ def __init__ (self , * new_keys ):
233+ self ._commit_result = _CommitResult (* new_keys )
167234
168235 def save_entity (self , dataset_id , key_pb , properties ,
169236 exclude_from_indexes = (), mutation = None ):
@@ -201,3 +268,8 @@ def is_partial(self):
201268
202269 def to_protobuf (self ):
203270 return self ._key
271+
272+ def completed_key (self , new_id ):
273+ assert self ._partial
274+ self ._id = new_id
275+ self ._partial = False
0 commit comments