package ch.alv.components.data.adapter;
import ch.alv.components.core.search.MapBasedValuesProvider;
import ch.alv.components.data.DataLayerException;
import ch.alv.components.data.mock.MockJpaEntity;
import ch.alv.components.data.mock.MockJpaQueryProvider;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import static org.junit.Assert.*;
/**
* Unit tests for the {@link ch.alv.components.data.query.DefaultQueryFactory} class.
*
* @since 1.0.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring/jpa-data-store-adapter-test-context.xml")
@SuppressWarnings("unchecked")
public class JpaDataStoreAdapterTest {
@Resource
private DataStoreAdapter adapter;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void testFind() throws DataLayerException {
MockJpaEntity entity = new MockJpaEntity();
entity = (MockJpaEntity) adapter.save(entity, MockJpaEntity.class);
assertNotNull(adapter.find(entity.getId(), MockJpaEntity.class));
assertNull(adapter.find("unknownItem", MockJpaEntity.class));
assertEquals(1, adapter.find(MockJpaEntity.class).size());
assertEquals(1, adapter.find(MockJpaQueryProvider.NAME, new MapBasedValuesProvider(), MockJpaEntity.class).size());
expectedException.expect(DataLayerException.class);
expectedException.expectMessage("Could not execute query with name 'unknownQuery'.");
adapter.find("unknownQuery", new MapBasedValuesProvider(), MockJpaEntity.class);
}
@Test
public void testCreate() throws DataLayerException {
assertNotNull(adapter.save(new MockJpaEntity(), MockJpaEntity.class).getId());
}
@Test
public void testUpdate() throws DataLayerException {
MockJpaEntity entity = new MockJpaEntity();
entity = (MockJpaEntity) adapter.save(entity, MockJpaEntity.class);
String id = entity.getId();
assertNull(entity.getName());
entity.setName("testName");
adapter.save(entity, MockJpaEntity.class);
entity = (MockJpaEntity) adapter.find(id, MockJpaEntity.class);
assertEquals("testName", entity.getName());
}
@Test
public void testDelete() throws DataLayerException {
MockJpaEntity doc = new MockJpaEntity();
doc = (MockJpaEntity) adapter.save(doc, MockJpaEntity.class);
adapter.delete(doc.getId(), MockJpaEntity.class);
assertNull(adapter.find(doc.getId(), MockJpaEntity.class));
adapter.delete("unknown", MockJpaEntity.class);
}
}