@Test
  public void testTagSnapshot() throws DataProviderException {
    Snapshot snap =
        dataProvider.tagSnapshot(branchSnapshot, Optional.of("name"), Optional.of("message"));
    assertEquals(branchSnapshot, snap);
    verify(notifier, times(1)).snapshotTagged(snap);
    verify(notifier, only()).snapshotTagged(snap);
    Mockito.reset(notifier);

    snap = dataProvider.tagSnapshot(branchSnapshot, Optional.of("name2"), Optional.of("message"));
    assertEquals(branchSnapshot, snap);
    verify(notifier, times(1)).synchronised();
    verify(notifier, only()).synchronised();

    try {
      dataProvider.tagSnapshot(branchSnapshot, Optional.of("name4"), Optional.of("message"));
      fail("Exception should happen");
    } catch (DataProviderException e) {
      assertNotNull(e.getMessage());
    }
    verify(notifier, times(1)).synchronised();
    verify(notifier, only()).synchronised();

    Mockito.reset(notifier);
    snap = dataProvider.tagSnapshot(branchSnapshot, Optional.of("name3"), Optional.of("message"));
    assertNull(snap);
    verify(notifier, never()).synchronised();
  }