@Test
public void testSingleEntityCRUD_EmCleared()
{
// Persist
final SampleEntity entity = new SampleEntity();
entity.setKey(1);
entity.setName("Amry");
entity.setCity("Delhi");
em.persist(entity);
Assert.assertTrue(em.contains(entity));
em.clear();
Assert.assertFalse(em.contains(entity));
SampleEntity found = em.find(SampleEntity.class, 1, new HashMap<String, Object>());
assertSampleEntity(found);
found.setName("Xamry");
found.setCity("Noida");
em.clear();
em.merge(found);
SampleEntity foundAfterMerge = em.find(SampleEntity.class, 1);
assertUpdatedSampleEntity(foundAfterMerge);
// Modify record in dummy database directly
SampleEntity se = (SampleEntity) DummyDatabase.INSTANCE.getSchema("KunderaTest").getTable("table")
.getRecord(new Integer(1));
se.setCity("Singapore");
em.refresh(foundAfterMerge);
SampleEntity found2 = em.find(SampleEntity.class, 1);
Assert.assertEquals("Singapore", found2.getCity());
em.detach(foundAfterMerge);
em.clear();
found = em.find(SampleEntity.class, 1);
em.remove(found);
em.clear();
SampleEntity foundAfterDeletion = em.find(SampleEntity.class, 1);
Assert.assertNull(foundAfterDeletion);
}