@Test
public void testToUpdateItemSpec() throws Exception {

    UUID updateId = UUID.randomUUID();
    UUID updaterId = UUID.randomUUID();
    Instant now = Instant.now();
    Update<TestModel> update = Update.of(
            TestModel.builder().name("Test").birthday(LocalDate.of(1985, 10, 26)).country("US").build(),
            ImmutableSet.of("name", "birthday"),
            ImmutableSet.of("email"));
    UpdateItemSpec spec = dao.toUpdateItemSpec(updateId, update, now, updaterId);
    assertEquals("SET #name = :name, #birthday = :birthday, #updateId = :updateId, #updateAt = :updateAt REMOVE #email", spec.getUpdateExpression());
    assertEquals(updaterId.toString(), spec.getValueMap().get(":updateId"));
    assertEquals("Test", spec.getValueMap().get(":name"));
    assertEquals(updaterId.toString(), spec.getValueMap().get(":updateId"));
    assertEquals(new Long(now.toEpochMilli()), spec.getValueMap().get(":updateAt"));
}