@Test public void shouldUpdateExistingDocument() { // given final TestObject testObject = new TestObject("someId", "someValue"); testee.create(testObject); final TestObject testObjectToUpdate = new TestObject("someId", "someUpdatedValue"); // when final boolean updated = testee.update(testObjectToUpdate); // then assertThat(updated, is(true)); final TestObject updatedTestObject = testee.findOne("someId").get(); assertThat(updatedTestObject.eTag, notNullValue()); assertThat(updatedTestObject.eTag, is(not(testObject.eTag))); assertThat(updatedTestObject.id, is("someId")); assertThat(updatedTestObject.value, is("someUpdatedValue")); }
@Test public void shouldUpdateIfETagMatch() { // given final TestObject testObject = new TestObject("someId", "someValue"); testee.create(testObject); final String etagFromCreated = testee.findOne("someId").get().eTag; final TestObject testObjectToUpdate = new TestObject("someId", "someUpdatedValue", etagFromCreated); // when final UpdateIfMatchResult updateIfMatchResult = testee.updateIfMatch(testObjectToUpdate, etagFromCreated); final TestObject updatedTestObject = testee.findOne("someId").get(); // then assertThat(updateIfMatchResult, is(UpdateIfMatchResult.OK)); assertThat(updatedTestObject.eTag, notNullValue()); assertThat(updatedTestObject.eTag, is(not(etagFromCreated))); assertThat(updatedTestObject.id, is("someId")); assertThat(updatedTestObject.value, is("someUpdatedValue")); }
@Test public void shouldNotUpdateIfEtagNotMatch() { // given final TestObject testObject = new TestObject("someId", "someValue", "someEtagWhichIsNotInTheDb"); testee.create(testObject); // when final UpdateIfMatchResult updated = testee.updateIfMatch(testObject, "someOtherETag"); // then assertThat(updated, is(UpdateIfMatchResult.CONCURRENTLY_MODIFIED)); }
@Test public void shouldNotCreateWithMissingId() { // given final TestObject testObject = new TestObject(null, "someValue"); // when / then assertThrows(NullPointerException.class, () -> { testee.create(testObject); }); }