@@ -158,6 +158,44 @@ public void insertDocumentOverwriteReturnOld() {
158158 assertThat (collection .count ().getCount (), is (initialCount + 1L ));
159159 }
160160
161+ @ Test
162+ public void insertDocumentOverwriteModeReplace () {
163+ assumeTrue (isAtLeastVersion (3 , 7 ));
164+
165+ String key = "key-" + UUID .randomUUID ().toString ();
166+ final BaseDocument doc = new BaseDocument (key );
167+ doc .addAttribute ("foo" , "a" );
168+ final DocumentCreateEntity <BaseDocument > meta = collection .insertDocument (doc );
169+
170+ final BaseDocument doc2 = new BaseDocument (key );
171+ doc2 .addAttribute ("bar" , "b" );
172+ final DocumentCreateEntity <BaseDocument > repsert = collection
173+ .insertDocument (doc2 , new DocumentCreateOptions ().overwriteMode (OverwriteMode .replace ).returnNew (true ));
174+
175+ assertThat (repsert , is (notNullValue ()));
176+ assertThat (repsert .getRev (), is (not (meta .getRev ())));
177+ assertThat (repsert .getNew ().getProperties ().containsKey ("foo" ), is (false ));
178+ assertThat (repsert .getNew ().getAttribute ("bar" ).toString (), is ("b" ));
179+ }
180+
181+ @ Test
182+ public void insertDocumentOverwriteModeUpdate () {
183+ assumeTrue (isAtLeastVersion (3 , 7 ));
184+
185+ final BaseDocument doc = new BaseDocument ();
186+ doc .addAttribute ("foo" , "a" );
187+ final DocumentCreateEntity <BaseDocument > meta = collection .insertDocument (doc );
188+
189+ doc .addAttribute ("bar" , "b" );
190+ final DocumentCreateEntity <BaseDocument > upsert = collection
191+ .insertDocument (doc , new DocumentCreateOptions ().overwriteMode (OverwriteMode .update ).returnNew (true ));
192+
193+ assertThat (upsert , is (notNullValue ()));
194+ assertThat (upsert .getRev (), is (not (meta .getRev ())));
195+ assertThat (upsert .getNew ().getAttribute ("foo" ).toString (), is ("a" ));
196+ assertThat (upsert .getNew ().getAttribute ("bar" ).toString (), is ("b" ));
197+ }
198+
161199 @ Test
162200 public void insertDocumentWaitForSync () {
163201 final DocumentCreateOptions options = new DocumentCreateOptions ().waitForSync (true );
@@ -1506,6 +1544,35 @@ public void insertDocumentsOverwrite() {
15061544 }
15071545 }
15081546
1547+ @ Test
1548+ public void insertDocumentsOverwriteModeUpdate () {
1549+ assumeTrue (isAtLeastVersion (3 , 7 ));
1550+
1551+ final BaseDocument doc1 = new BaseDocument ();
1552+ doc1 .addAttribute ("foo" , "a" );
1553+ final DocumentCreateEntity <BaseDocument > meta1 = collection .insertDocument (doc1 );
1554+
1555+ final BaseDocument doc2 = new BaseDocument ();
1556+ doc2 .addAttribute ("foo" , "a" );
1557+ final DocumentCreateEntity <BaseDocument > meta2 = collection .insertDocument (doc2 );
1558+
1559+ doc1 .addAttribute ("bar" , "b" );
1560+ doc2 .addAttribute ("bar" , "b" );
1561+
1562+ final MultiDocumentEntity <DocumentCreateEntity <BaseDocument >> repsert = collection
1563+ .insertDocuments (Arrays .asList (doc1 , doc2 ),
1564+ new DocumentCreateOptions ().overwriteMode (OverwriteMode .update ).returnNew (true ));
1565+ assertThat (repsert , is (notNullValue ()));
1566+ assertThat (repsert .getDocuments ().size (), is (2 ));
1567+ assertThat (repsert .getErrors ().size (), is (0 ));
1568+ for (final DocumentCreateEntity <BaseDocument > documentCreateEntity : repsert .getDocuments ()) {
1569+ assertThat (documentCreateEntity .getRev (), is (not (meta1 .getRev ())));
1570+ assertThat (documentCreateEntity .getRev (), is (not (meta2 .getRev ())));
1571+ assertThat (documentCreateEntity .getNew ().getAttribute ("foo" ).toString (), is ("a" ));
1572+ assertThat (documentCreateEntity .getNew ().getAttribute ("bar" ).toString (), is ("b" ));
1573+ }
1574+ }
1575+
15091576 @ Test
15101577 public void insertDocumentsJson () {
15111578 final Collection <String > values = new ArrayList <>();
0 commit comments