package org.springframework.data.simpledb.repository; import static org.junit.Assert.assertEquals; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.simpledb.domain.SimpleDbUser; import org.springframework.data.simpledb.repository.BasicSimpleDbUserRepository; import org.springframework.data.simpledb.repository.util.IncrementalWait; import org.springframework.data.simpledb.repository.util.SimpleDbUserBuilder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:simpledb-repository-context.xml") public class BasicSimpleDbUserRepositoryTest { @Autowired BasicSimpleDbUserRepository repository; @After public void tearDown() { repository.deleteAll(); } @Test public void save_without_consistent_read_does_not_ensure_item_found() { String itemName = "FirstItem"; SimpleDbUser user = SimpleDbUserBuilder.createUserWithSampleAttributes(itemName); repository.save(user); incrementalWaitFindOne(user.getItemName()); SimpleDbUser foundUser = repository.findOne(user.getItemName()); assertEquals(user.getItemName(), foundUser.getItemName()); assertEquals(user, foundUser); } private void incrementalWaitFindOne(final String itemName) { new IncrementalWait<SimpleDbUser>() { @Override public SimpleDbUser execute() { return repository.findOne(itemName); } }.untilResponseNotNull(); } }