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.MockElasticsearchQueryProvider; import ch.alv.components.data.mock.MockTestDocument; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import java.util.UUID; 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/elasticsearch-data-store-adapter-test-context.xml") public class ElasticDataStoreAdapterTest { @Resource private DataStoreAdapter<MockTestDocument, String> adapter; @Resource private ElasticsearchTemplate template; @Rule public ExpectedException expectedException = ExpectedException.none(); private String id = UUID.randomUUID().toString(); @Test public void testFind() throws DataLayerException { template.deleteIndex(MockTestDocument.class); MockTestDocument doc = new MockTestDocument(); doc.setId(id); assertEquals(id, adapter.save(doc, MockTestDocument.class).getId()); assertNotNull(adapter.find(id, MockTestDocument.class)); assertNull(adapter.find("unknownItem", MockTestDocument.class)); assertEquals(1, adapter.find(MockTestDocument.class).size()); assertEquals(1, adapter.find(MockElasticsearchQueryProvider.NAME, new MapBasedValuesProvider(), MockTestDocument.class).size()); expectedException.expect(DataLayerException.class); expectedException.expectMessage("Could not execute query with name 'unknownQuery'."); adapter.find("unknownQuery", new MapBasedValuesProvider(), MockTestDocument.class); } @Test public void testSave() throws DataLayerException { template.deleteIndex(MockTestDocument.class); assertFalse(template.indexExists(MockTestDocument.class)); adapter.save(new MockTestDocument(), MockTestDocument.class); assertTrue(template.indexExists(MockTestDocument.class)); MockTestDocument doc = new MockTestDocument(); doc.setId(id); MockTestDocument newDoc = adapter.save(doc, MockTestDocument.class); assertEquals(doc.getId(), newDoc.getId()); } @Test public void testDelete() throws DataLayerException { template.deleteIndex(MockTestDocument.class); MockTestDocument doc = new MockTestDocument(); doc.setId(id); adapter.save(doc, MockTestDocument.class); adapter.delete(id, MockTestDocument.class); assertNull(adapter.find(id, MockTestDocument.class)); } }