@@ -139,6 +139,36 @@ public void setDocument() throws Exception {
139139 assertEquals (commit (writes .toArray (new Write [] {})), commitRequest );
140140 }
141141
142+ @ Test
143+ public void setDocumentWithValue () throws Exception {
144+ doReturn (commitResponse (4 , 0 ))
145+ .when (firestoreMock )
146+ .sendRequest (
147+ commitCapture .capture (), Matchers .<UnaryCallable <CommitRequest , CommitResponse >>any ());
148+
149+ batch
150+ .set (documentReference , LocalFirestoreHelper .SINGLE_FIELD_PROTO )
151+ .set (documentReference , LocalFirestoreHelper .SINGLE_FIELD_OBJECT )
152+ .set (documentReference , LocalFirestoreHelper .SINGLE_FIELD_PROTO , SetOptions .merge ())
153+ .set (documentReference , LocalFirestoreHelper .SINGLE_FIELD_OBJECT , SetOptions .merge ());
154+
155+ List <Write > writes = new ArrayList <>();
156+ writes .add (set (LocalFirestoreHelper .SINGLE_FIELD_PROTO ));
157+ writes .add (set (LocalFirestoreHelper .SINGLE_FIELD_PROTO ));
158+ writes .add (set (LocalFirestoreHelper .SINGLE_FIELD_PROTO , Arrays .asList ("foo" )));
159+ writes .add (set (LocalFirestoreHelper .SINGLE_FIELD_PROTO , Arrays .asList ("foo" )));
160+
161+ assertEquals (4 , batch .getMutationsSize ());
162+
163+ List <WriteResult > writeResults = batch .commit ().get ();
164+ for (int i = 0 ; i < writeResults .size (); ++i ) {
165+ assertEquals (Timestamp .ofTimeSecondsAndNanos (i , i ), writeResults .get (i ).getUpdateTime ());
166+ }
167+
168+ CommitRequest commitRequest = commitCapture .getValue ();
169+ assertEquals (commit (writes .toArray (new Write [] {})), commitRequest );
170+ }
171+
142172 @ Test
143173 public void omitWriteResultForDocumentTransforms () throws Exception {
144174 doReturn (commitResponse (2 , 0 ))
@@ -179,6 +209,31 @@ public void createDocument() throws Exception {
179209 assertEquals (commit (writes .toArray (new Write [] {})), commitRequest );
180210 }
181211
212+ @ Test
213+ public void createDocumentWithValue () throws Exception {
214+ doReturn (commitResponse (2 , 0 ))
215+ .when (firestoreMock )
216+ .sendRequest (
217+ commitCapture .capture (), Matchers .<UnaryCallable <CommitRequest , CommitResponse >>any ());
218+
219+ batch
220+ .create (documentReference , LocalFirestoreHelper .SINGLE_FIELD_PROTO )
221+ .create (documentReference , LocalFirestoreHelper .SINGLE_FIELD_OBJECT );
222+
223+ assertEquals (2 , batch .getMutationsSize ());
224+
225+ List <WriteResult > writeResults = batch .commit ().get ();
226+ List <Write > writes = new ArrayList <>();
227+
228+ for (int i = 0 ; i < writeResults .size (); ++i ) {
229+ assertEquals (Timestamp .ofTimeSecondsAndNanos (i , i ), writeResults .get (i ).getUpdateTime ());
230+ writes .add (create (LocalFirestoreHelper .SINGLE_FIELD_PROTO ));
231+ }
232+
233+ CommitRequest commitRequest = commitCapture .getValue ();
234+ assertEquals (commit (writes .toArray (new Write [] {})), commitRequest );
235+ }
236+
182237 @ Test
183238 public void deleteDocument () throws Exception {
184239 doReturn (commitResponse (2 , 0 ))
0 commit comments