From 295a5e0063623b746cfb74d64f127ed69775a227 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 25 Dec 2013 17:02:27 +0100 Subject: [PATCH] [Minor] refactored tests for persistence layers to remove duplicate code --- .../dao/test/AbstractDaoImplTest.java | 23 ++- .../dao/test/ObserverUpdateTest.java | 8 +- .../dao/test/PostgreSqlOrderDaoTest.java | 136 +---------------- .../dao/test/PostgreSqlResourceDaoTest.java | 138 +----------------- .../dao/test/PostgresqlContainerTest.java | 17 +-- 5 files changed, 37 insertions(+), 285 deletions(-) diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/AbstractDaoImplTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/AbstractDaoImplTest.java index f386ff809..897c65d64 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/AbstractDaoImplTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/AbstractDaoImplTest.java @@ -20,7 +20,6 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.postgresql.DbSchemaVersionCheck; import li.strolch.testbase.runtime.RuntimeMock; @@ -30,15 +29,17 @@ import org.junit.BeforeClass; /** * @author Robert von Burg */ -public abstract class AbstractDaoImplTest extends RuntimeMock { +public abstract class AbstractDaoImplTest { + + public static final String RUNTIME_PATH = "target/strolchRuntime/"; //$NON-NLS-1$ + public static final String DB_STORE_PATH_DIR = "dbStore"; //$NON-NLS-1$ + public static final String CONFIG_SRC = "src/test/resources/runtime/config"; //$NON-NLS-1$ private static final String DB_URL = "jdbc:postgresql://localhost/testdb"; //$NON-NLS-1$ private static final String DB_USERNAME = "testuser"; //$NON-NLS-1$ private static final String DB_PASSWORD = "test"; //$NON-NLS-1$ - public static final String RUNTIME_PATH = "target/strolchRuntime/"; //$NON-NLS-1$ - public static final String DB_STORE_PATH_DIR = "dbStore"; //$NON-NLS-1$ - public static final String CONFIG_SRC = "src/test/resources/runtime/config"; //$NON-NLS-1$ - protected static PersistenceHandler persistenceHandler; + + protected static RuntimeMock runtimeMock; @BeforeClass public static void beforeClass() throws SQLException { @@ -47,12 +48,10 @@ public abstract class AbstractDaoImplTest extends RuntimeMock { File rootPath = new File(RUNTIME_PATH); File configSrc = new File(CONFIG_SRC); - RuntimeMock.mockRuntime(rootPath, configSrc); + runtimeMock = new RuntimeMock(); + runtimeMock.mockRuntime(rootPath, configSrc); new File(rootPath, DB_STORE_PATH_DIR).mkdir(); - RuntimeMock.startContainer(rootPath); - - // initialize the component configuration - persistenceHandler = getContainer().getComponent(PersistenceHandler.class); + runtimeMock.startContainer(rootPath); } private static void dropSchema() throws SQLException { @@ -65,6 +64,6 @@ public abstract class AbstractDaoImplTest extends RuntimeMock { @AfterClass public static void afterClass() { - RuntimeMock.destroyRuntime(); + runtimeMock.destroyRuntime(); } } diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java index 54cfec5c5..9c145f6ec 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java @@ -76,18 +76,18 @@ public class ObserverUpdateTest extends AbstractDaoImplTest { // register an observer for orders and resources ElementAddedObserver observer = new ElementAddedObserver(); - getContainer().getComponent(ObserverHandler.class).registerObserver(Tags.ORDER, observer); - getContainer().getComponent(ObserverHandler.class).registerObserver(Tags.RESOURCE, observer); + runtimeMock.getContainer().getComponent(ObserverHandler.class).registerObserver(Tags.ORDER, observer); + runtimeMock.getContainer().getComponent(ObserverHandler.class).registerObserver(Tags.RESOURCE, observer); // create order Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType", new Date(), State.CREATED); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - try (StrolchTransaction tx = persistenceHandler.openTx();) { + try (StrolchTransaction tx = runtimeMock.getPersistenceHandler().openTx();) { tx.getOrderDao().save(newOrder); } // create resource Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - try (StrolchTransaction tx = persistenceHandler.openTx();) { + try (StrolchTransaction tx = runtimeMock.getPersistenceHandler().openTx();) { tx.getResourceDao().save(newResource); } diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlOrderDaoTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlOrderDaoTest.java index 1e7bef900..89bda1f39 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlOrderDaoTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlOrderDaoTest.java @@ -15,152 +15,30 @@ */ package li.strolch.persistence.postgresql.dao.test; -import static li.strolch.model.ModelGenerator.BAG_ID; -import static li.strolch.model.ModelGenerator.PARAM_STRING_ID; -import static li.strolch.model.ModelGenerator.createOrder; -import static li.strolch.model.ModelGenerator.createOrders; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import li.strolch.model.Order; -import li.strolch.model.parameter.Parameter; -import li.strolch.persistence.api.OrderDao; -import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.testbase.runtime.OrderModelTestRunner; import org.junit.Test; public class PostgreSqlOrderDaoTest extends AbstractDaoImplTest { - private static final String ID = "@testOrder"; //$NON-NLS-1$ - private static final String NAME = "Test Order"; //$NON-NLS-1$ - private static final String TYPE = "ToStock"; //$NON-NLS-1$ - @Test public void shouldCreateOrder() { - // create - Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getOrderDao().save(newOrder); - } + OrderModelTestRunner testRunner = new OrderModelTestRunner(runtimeMock); + testRunner.runCreateOrderTest(); } @Test public void shouldCrud() { - // create - Order newOrder = createOrder(ID, NAME, TYPE); - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getOrderDao().save(newOrder); - } - - // read - Order readOrder = null; - try (StrolchTransaction tx = persistenceHandler.openTx();) { - readOrder = tx.getOrderDao().queryBy(TYPE, ID); - } - assertNotNull("Should read Order with id " + ID, readOrder); //$NON-NLS-1$ - - // update - Parameter sParam = readOrder.getParameter(BAG_ID, PARAM_STRING_ID); - String newStringValue = "Giddiya!"; //$NON-NLS-1$ - sParam.setValue(newStringValue); - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getOrderDao().update(readOrder); - } - - // read updated - Order updatedOrder = null; - try (StrolchTransaction tx = persistenceHandler.openTx();) { - updatedOrder = tx.getOrderDao().queryBy(TYPE, ID); - } - assertNotNull("Should read Order with id " + ID, updatedOrder); //$NON-NLS-1$ - assertFalse("Objects can't be the same reference after re-reading!", readOrder == updatedOrder); //$NON-NLS-1$ - Parameter updatedParam = readOrder.getParameter(BAG_ID, PARAM_STRING_ID); - assertEquals(newStringValue, updatedParam.getValue()); - - // delete - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getOrderDao().remove(readOrder); - } - - // fail to re-read - try (StrolchTransaction tx = persistenceHandler.openTx();) { - Order order = tx.getOrderDao().queryBy(TYPE, ID); - assertNull("Should no read Order with id " + ID, order); //$NON-NLS-1$ - } + OrderModelTestRunner testRunner = new OrderModelTestRunner(runtimeMock); + testRunner.runCrudTests(); } - @SuppressWarnings("nls") @Test public void shouldPerformBulkOperations() { - List orders = new ArrayList<>(); - orders.addAll(createOrders(orders.size(), 5, "@", "My Order ", "MyType1")); - orders.addAll(createOrders(orders.size(), 5, "@", "Other Order ", "MyType2")); - orders.addAll(createOrders(orders.size(), 5, "@", "Further Order ", "MyType3")); - - Comparator comparator = new Comparator() { - @Override - public int compare(Order o1, Order o2) { - return o1.getId().compareTo(o2.getId()); - } - }; - Collections.sort(orders, comparator); - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - tx.getOrderDao().removeAll(tx.getOrderDao().queryAll()); - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - tx.getOrderDao().saveAll(orders); - } - - Set expectedTypes = new HashSet<>(); - expectedTypes.add("MyType1"); - expectedTypes.add("MyType2"); - expectedTypes.add("MyType3"); - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - List allOrders = tx.getOrderDao().queryAll(); - Collections.sort(allOrders, comparator); - assertEquals(orders, allOrders); - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - OrderDao orderDao = tx.getOrderDao(); - - Set types = orderDao.queryTypes(); - assertEquals(expectedTypes, types); - - Set keySet = orderDao.queryKeySet(); - assertEquals(15, keySet.size()); - - for (String type : types) { - Set idsByType = orderDao.queryKeySet(type); - assertEquals(5, idsByType.size()); - - List ordersByType = orderDao.queryAll(type); - assertEquals(5, ordersByType.size()); - } - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - Order order = tx.getOrderDao().queryBy("MyType1", "@_00000001"); - assertNotNull(order); - order = tx.getOrderDao().queryBy("MyType2", "@_00000006"); - assertNotNull(order); - order = tx.getOrderDao().queryBy("MyType3", "@_00000011"); - assertNotNull(order); - } + OrderModelTestRunner testRunner = new OrderModelTestRunner(runtimeMock); + testRunner.runBulkOperationTests(); } } diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlResourceDaoTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlResourceDaoTest.java index 40f61af94..695220574 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlResourceDaoTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgreSqlResourceDaoTest.java @@ -15,152 +15,30 @@ */ package li.strolch.persistence.postgresql.dao.test; -import static li.strolch.model.ModelGenerator.BAG_ID; -import static li.strolch.model.ModelGenerator.PARAM_STRING_ID; -import static li.strolch.model.ModelGenerator.createResource; -import static li.strolch.model.ModelGenerator.createResources; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import li.strolch.model.Resource; -import li.strolch.model.parameter.Parameter; -import li.strolch.persistence.api.ResourceDao; -import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.testbase.runtime.ResourceModelTestRunner; import org.junit.Test; public class PostgreSqlResourceDaoTest extends AbstractDaoImplTest { - private static final String ID = "@testResource"; //$NON-NLS-1$ - private static final String NAME = "Test Resource"; //$NON-NLS-1$ - private static final String TYPE = "Box"; //$NON-NLS-1$ - @Test - public void shouldCreateResource() { + public void shouldCreateOrder() { - // create - Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getResourceDao().save(newResource); - } + ResourceModelTestRunner testRunner = new ResourceModelTestRunner(runtimeMock); + testRunner.runCreateResourceTest(); } @Test public void shouldCrud() { - // create - Resource newResource = createResource(ID, NAME, TYPE); - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getResourceDao().save(newResource); - } - - // read - Resource readResource = null; - try (StrolchTransaction tx = persistenceHandler.openTx();) { - readResource = tx.getResourceDao().queryBy(TYPE, ID); - } - assertNotNull("Should read Resource with id " + ID, readResource); //$NON-NLS-1$ - - // update - Parameter sParam = readResource.getParameter(BAG_ID, PARAM_STRING_ID); - String newStringValue = "Giddiya!"; //$NON-NLS-1$ - sParam.setValue(newStringValue); - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getResourceDao().update(readResource); - } - - // read updated - Resource updatedResource = null; - try (StrolchTransaction tx = persistenceHandler.openTx();) { - updatedResource = tx.getResourceDao().queryBy(TYPE, ID); - } - assertNotNull("Should read Resource with id " + ID, updatedResource); //$NON-NLS-1$ - assertFalse("Objects can't be the same reference after re-reading!", readResource == updatedResource); //$NON-NLS-1$ - Parameter updatedParam = readResource.getParameter(BAG_ID, PARAM_STRING_ID); - assertEquals(newStringValue, updatedParam.getValue()); - - // delete - try (StrolchTransaction tx = persistenceHandler.openTx();) { - tx.getResourceDao().remove(readResource); - } - - // fail to re-read - try (StrolchTransaction tx = persistenceHandler.openTx();) { - Resource resource = tx.getResourceDao().queryBy(TYPE, ID); - assertNull("Should no read Resource with id " + ID, resource); //$NON-NLS-1$ - } + ResourceModelTestRunner testRunner = new ResourceModelTestRunner(runtimeMock); + testRunner.runCrudTests(); } - @SuppressWarnings("nls") @Test public void shouldPerformBulkOperations() { - List resources = new ArrayList<>(); - resources.addAll(createResources(resources.size(), 5, "@", "My Resource ", "MyType1")); - resources.addAll(createResources(resources.size(), 5, "@", "Other Resource ", "MyType2")); - resources.addAll(createResources(resources.size(), 5, "@", "Further Resource ", "MyType3")); - - Comparator comparator = new Comparator() { - @Override - public int compare(Resource o1, Resource o2) { - return o1.getId().compareTo(o2.getId()); - } - }; - Collections.sort(resources, comparator); - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - tx.getResourceDao().removeAll(tx.getResourceDao().queryAll()); - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - tx.getResourceDao().saveAll(resources); - } - - Set expectedTypes = new HashSet<>(); - expectedTypes.add("MyType1"); - expectedTypes.add("MyType2"); - expectedTypes.add("MyType3"); - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - List allResources = tx.getResourceDao().queryAll(); - Collections.sort(allResources, comparator); - assertEquals(resources, allResources); - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - ResourceDao resourceDao = tx.getResourceDao(); - - Set types = resourceDao.queryTypes(); - assertEquals(expectedTypes, types); - - Set keySet = resourceDao.queryKeySet(); - assertEquals(15, keySet.size()); - - for (String type : types) { - Set idsByType = resourceDao.queryKeySet(type); - assertEquals(5, idsByType.size()); - - List resourcesByType = resourceDao.queryAll(type); - assertEquals(5, resourcesByType.size()); - } - } - - try (StrolchTransaction tx = persistenceHandler.openTx()) { - Resource resource = tx.getResourceDao().queryBy("MyType1", "@_00000001"); - assertNotNull(resource); - resource = tx.getResourceDao().queryBy("MyType2", "@_00000006"); - assertNotNull(resource); - resource = tx.getResourceDao().queryBy("MyType3", "@_00000011"); - assertNotNull(resource); - } + ResourceModelTestRunner testRunner = new ResourceModelTestRunner(runtimeMock); + testRunner.runBulkOperationTests(); } } diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgresqlContainerTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgresqlContainerTest.java index 2bf09f700..6b5b99d58 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgresqlContainerTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/PostgresqlContainerTest.java @@ -18,7 +18,6 @@ package li.strolch.persistence.postgresql.dao.test; import java.io.File; import java.sql.SQLException; -import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.testbase.runtime.RuntimeMock; @@ -29,32 +28,30 @@ import org.junit.Test; /** * @author Robert von Burg */ -public class PostgresqlContainerTest extends RuntimeMock { +public class PostgresqlContainerTest { - protected static PersistenceHandler persistenceHandler; + private static RuntimeMock runtimeMock; @BeforeClass public static void beforeClass() throws SQLException { File rootPath = new File(AbstractDaoImplTest.RUNTIME_PATH); File configSrc = new File(AbstractDaoImplTest.CONFIG_SRC); - RuntimeMock.mockRuntime(rootPath, configSrc); + runtimeMock = new RuntimeMock(); + runtimeMock.mockRuntime(rootPath, configSrc); new File(rootPath, AbstractDaoImplTest.DB_STORE_PATH_DIR).mkdir(); - RuntimeMock.startContainer(rootPath); - - // initialize the component configuration - persistenceHandler = getContainer().getComponent(PersistenceHandler.class); + runtimeMock.startContainer(rootPath); } @Test public void shouldStartContainer() { - try (StrolchTransaction tx = getPersistenceHandler().openTx()) { + try (StrolchTransaction tx = runtimeMock.getPersistenceHandler().openTx()) { tx.getOrderDao().queryKeySet(); } } @AfterClass public static void afterClass() { - RuntimeMock.destroyRuntime(); + runtimeMock.destroyRuntime(); } }