@Test public void shouldHaveNoDbInteractionForEmptyListsUsingCreateOrUpdateBulk() { testee = spy(new TestRepository(Mockito.mock(MongoDatabase.class))); // given final List<TestObject> emptyList = Collections.emptyList(); // when testee.createOrUpdateBulk(emptyList); // then verify(testee, never()).collection(); }
@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 shouldFindAllEntries() { createTestObjects("testObject01", "testObject02", "testObject03", "testObject04", "testObject05", "testObject06"); // when final List<TestObject> foundObjects = testee.findAll(); // then assertThat(foundObjects, hasSize(6)); assertThat(foundObjects.get(0).value, is("testObject01")); assertThat(foundObjects.get(1).value, is("testObject02")); assertThat(foundObjects.get(2).value, is("testObject03")); assertThat(foundObjects.get(3).value, is("testObject04")); assertThat(foundObjects.get(4).value, is("testObject05")); assertThat(foundObjects.get(5).value, is("testObject06")); }
@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 shouldStreamAllEntries() { createTestObjects("testObject01", "testObject02", "testObject03", "testObject04", "testObject05", "testObject06"); // when final List<TestObject> foundObjects = testee.findAllAsStream().collect(toList()); // then assertThat(foundObjects, hasSize(6)); assertThat(foundObjects.get(0).value, is("testObject01")); assertThat(foundObjects.get(1).value, is("testObject02")); assertThat(foundObjects.get(2).value, is("testObject03")); assertThat(foundObjects.get(3).value, is("testObject04")); assertThat(foundObjects.get(4).value, is("testObject05")); assertThat(foundObjects.get(5).value, is("testObject06")); }
@Test public void shouldCreateOrUpdateBulk() { // given final TestObject testObjectA = new TestObject("someIdA", "someValueA"); final TestObject testObjectB = new TestObject("someIdB", "someValueB"); // when testee.createOrUpdateBulk(asList(testObjectA, testObjectB)); // then final List<TestObject> foundObjects = testee.findAll(); assertThat(foundObjects.size(), is(2)); assertThat(foundObjects, Matchers.containsInAnyOrder(asList( new TestObjectMatcher(testObjectA), new TestObjectMatcher(testObjectB)))); }
@Test public void shouldFindAllEntriesWithSkipAndLimit() { createTestObjects("testObject01", "testObject02", "testObject03", "testObject04", "testObject05", "testObject06"); // when final List<TestObject> foundObjects = testee.findAll(2, 3); // then assertThat(foundObjects, hasSize(3)); assertThat(foundObjects.get(0).value, is("testObject03")); assertThat(foundObjects.get(1).value, is("testObject04")); assertThat(foundObjects.get(2).value, is("testObject05")); }
@Test public void shouldNotUpdateIfEtagNotExists() { // given final TestObject testObject = new TestObject("someId", "someValue"); // when final UpdateIfMatchResult updated = testee.updateIfMatch(testObject, "someETag"); // then assertThat(updated, is(UpdateIfMatchResult.NOT_FOUND)); }
@Test public void shouldStreamAllEntriesWithSkipAndLimit() { createTestObjects("testObject01", "testObject02", "testObject03", "testObject04", "testObject05", "testObject06"); // when final List<TestObject> foundObjects = testee.findAllAsStream(2, 3).collect(toList()); // then assertThat(foundObjects, hasSize(3)); assertThat(foundObjects.get(0).value, is("testObject03")); assertThat(foundObjects.get(1).value, is("testObject04")); assertThat(foundObjects.get(2).value, is("testObject05")); }
@Test public void shouldNotCreateOrUpdateWithMissingId() { // given final TestObject testObject = new TestObject(null, "someValue"); // when / then assertThrows(NullPointerException.class, () -> { final TestObject resultingObject = testee.createOrUpdate(testObject); }); }
@BeforeEach public void setUp() { final MongoDatabase mongoDatabase = EmbeddedMongoHelper.getMongoClient().getDatabase("test-" + UUID.randomUUID()); testee = new TestRepository(mongoDatabase); }
@Test public void shouldNotCreateWithMissingId() { // given final TestObject testObject = new TestObject(null, "someValue"); // when / then assertThrows(NullPointerException.class, () -> { testee.create(testObject); }); }
@Test public void shouldNotUpdateMissingDocument() { // given final TestObject testObjectToUpdate = new TestObject("someId", "someUpdatedValue"); // when final boolean updated = testee.update(testObjectToUpdate); // then assertThat(updated, is(false)); assertThat(testee.findOne("someId").isPresent(), is(false)); }
@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 shouldFindOneWithMissingId() { // when / then assertThrows(NullPointerException.class, () -> { testee.findOne(null); }); }