@Test
public void testAddExistingFieldInputAlreadyExistingFieldExpectsOnlyOneFieldFromGetFields() {

  final String value = "Hello";
  final MetadataField newFirst = createField("first", 0, value);
  final DublinCoreMetadataCollection collection = new DublinCoreMetadataCollection(Arrays
    .asList(unorderedOne, unorderedTwo, unorderedThree, first, third, seventh, newFirst));
  int numberOfFirsts = 0;
  Opt<String> valueFound = Opt.none();
  for (final MetadataField field : collection.getFields()) {
    if (field.getInputID().equals(FIRST_ID)) {
      numberOfFirsts++;
      if (field.getValue() != null && field.getValue() instanceof String) {
        valueFound = Opt.some((String) field.getValue());
      }
    }
  }
  assertEquals("There should only be one field called first in the collection.", 1, numberOfFirsts);
  assertTrue("The value has been set so it should be in the collection.", valueFound.isSome());
  assertEquals("There should only be one field called first in the collection.", value, valueFound.get());
}