Skip to content

Commit 78052af

Browse files
committed
More tx tests
1 parent 8dab82b commit 78052af

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

datastore/src/test/java/io/spine/server/storage/datastore/TransactionWrapperTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,50 @@ void insert() {
274274
}
275275
}
276276

277+
@Test
278+
@DisplayName("fail on `create` if one of entities existed before transaction")
279+
void insertMany() {
280+
Key key = keyFactory.newKey(newUuid());
281+
String propertyName = "some_property";
282+
Entity oldEntity = Entity.newBuilder(key).build();
283+
Entity newEntity = Entity.newBuilder(key)
284+
.set(propertyName, 42L)
285+
.build();
286+
datastore.createOrUpdate(oldEntity);
287+
Key freshNewKey = keyFactory.newKey(newUuid());
288+
try (TransactionWrapper tx = datastore.newTransaction()) {
289+
Entity freshNewEntity = Entity.newBuilder(freshNewKey).build();
290+
tx.create(ImmutableList.of(freshNewEntity, newEntity));
291+
assertThrows(DatastoreException.class, tx::commit);
292+
}
293+
assertThat(datastore.read(freshNewKey))
294+
.isNull();
295+
assertThat(datastore.read(oldEntity.getKey()))
296+
.isEqualTo(oldEntity);
297+
}
298+
299+
@Test
300+
@DisplayName("put many entities into database")
301+
void putMany() {
302+
String propertyName = "foo";
303+
Key key = keyFactory.newKey(newUuid());
304+
Entity oldEntity = Entity.newBuilder(key).build();
305+
Entity newEntity = Entity.newBuilder(key)
306+
.set(propertyName, 42L)
307+
.build();
308+
datastore.createOrUpdate(oldEntity);
309+
Key freshNewKey = keyFactory.newKey(newUuid());
310+
try (TransactionWrapper tx = datastore.newTransaction()) {
311+
Entity freshNewEntity = Entity.newBuilder(freshNewKey).build();
312+
tx.createOrUpdate(ImmutableList.of(freshNewEntity, newEntity));
313+
tx.commit();
314+
}
315+
assertThat(datastore.read(freshNewKey))
316+
.isNotNull();
317+
assertThat(datastore.read(oldEntity.getKey()))
318+
.isEqualTo(newEntity);
319+
}
320+
277321
@Test
278322
@DisplayName("read multiple entities by IDs")
279323
void lookup() {

0 commit comments

Comments
 (0)