@SuppressWarnings("unchecked")
@Test
public void testCurrentDataSetIsEmptyAndExpectedDataContainsData() {

    // GIVEN
    final List<String> collectionNames = Collections.emptyList();
    final Iterator<String> collectionNamesIt = collectionNames.iterator();
    final MongoIterable<String> collectionIterable = mock(MongoIterable.class);
    final MongoCursor<String> iterator = mock(MongoCursor.class);
    when(mongoDatabase.listCollectionNames()).thenReturn(collectionIterable);
    when(collectionIterable.iterator()).thenReturn(iterator);
    when(iterator.hasNext()).thenAnswer((final InvocationOnMock invocation) -> collectionNamesIt.hasNext());
    when(iterator.next()).thenAnswer((final InvocationOnMock invocation) -> collectionNamesIt.next());
    final MongoCursor<Document> documentIterator = mock(MongoCursor.class);
    when(documentIterator.hasNext()).thenReturn(Boolean.FALSE);
    final FindIterable<Document> findIterable = mock(FindIterable.class);
    when(findIterable.iterator()).thenReturn(documentIterator);
    final MongoCollection<Document> collection = mock(MongoCollection.class);
    when(collection.count()).thenReturn(0l);
    when(collection.find(any(Document.class))).thenReturn(findIterable);
    when(collection.find()).thenReturn(findIterable);
    when(mongoDatabase.getCollection(anyString())).thenReturn(collection);
    final String[] toExclude = new String[] {};
    final List<Document> values1 = Arrays.asList(DOCUMENT_1);
    final Document expectedDataSet = new Document().append(COLLECTION_NAME_1, values1);
    final DataSetComparator comparator = new DataSetComparator(toExclude, false);
    // WHEN
    comparator.compare(mongoDatabase, expectedDataSet, errorCollector);
    // THEN
    assertThat(errorCollector.amountOfErrors(), equalTo(2));
    try {
        errorCollector.report();
        fail("AssertionError expected");
    } catch (final AssertionError e) {
        assertThat(e.getMessage(), containsString("failed in 2 case"));
        assertThat(e.getMessage(), containsString(COLLECTION_NAME_1 + " was expected to be present, but not found"));
        assertThat(e.getMessage(), containsString(DOCUMENT_1 + " was expected in [" + COLLECTION_NAME_1 + "], but is not present"));
    }
}