@Test
public void testUpdate() throws Exception {

    TestUser created = dao.create(TestUser.builder().name("Ian").email("ian@example.com").build());
    ObjectId updateBy = new ObjectId();
    Instant now = Instant.now();
    Update<TestUser> update = Update.of(
            TestUser.builder().name("Bob").build(),
            ImmutableSet.of("name"),
            ImmutableSet.of("email"));
    dao.update(created.getId(), update, now, updateBy);
    TestUser load = dao.load(created.getId());
    assertEquals("Bob", load.getName());
    assertEquals(updateBy, load.getUpdateId());
    assertEquals(now.toEpochMilli(), load.getUpdateAt().toEpochMilli());
    assertNull(load.getEmail());
}