[Minor] refactored tests for persistence layers to remove duplicate code
This commit is contained in:
parent
08c2baf4e8
commit
295a5e0063
|
@ -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 <eitch@eitchnet.ch>
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
OrderModelTestRunner testRunner = new OrderModelTestRunner(runtimeMock);
|
||||
testRunner.runCrudTests();
|
||||
}
|
||||
|
||||
// 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<String> 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<String> 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$
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
@Test
|
||||
public void shouldPerformBulkOperations() {
|
||||
|
||||
List<Order> 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<Order> comparator = new Comparator<Order>() {
|
||||
@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<String> expectedTypes = new HashSet<>();
|
||||
expectedTypes.add("MyType1");
|
||||
expectedTypes.add("MyType2");
|
||||
expectedTypes.add("MyType3");
|
||||
|
||||
try (StrolchTransaction tx = persistenceHandler.openTx()) {
|
||||
List<Order> allOrders = tx.getOrderDao().queryAll();
|
||||
Collections.sort(allOrders, comparator);
|
||||
assertEquals(orders, allOrders);
|
||||
}
|
||||
|
||||
try (StrolchTransaction tx = persistenceHandler.openTx()) {
|
||||
OrderDao orderDao = tx.getOrderDao();
|
||||
|
||||
Set<String> types = orderDao.queryTypes();
|
||||
assertEquals(expectedTypes, types);
|
||||
|
||||
Set<String> keySet = orderDao.queryKeySet();
|
||||
assertEquals(15, keySet.size());
|
||||
|
||||
for (String type : types) {
|
||||
Set<String> idsByType = orderDao.queryKeySet(type);
|
||||
assertEquals(5, idsByType.size());
|
||||
|
||||
List<Order> 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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
ResourceModelTestRunner testRunner = new ResourceModelTestRunner(runtimeMock);
|
||||
testRunner.runCrudTests();
|
||||
}
|
||||
|
||||
// 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<String> 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<String> 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$
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
@Test
|
||||
public void shouldPerformBulkOperations() {
|
||||
|
||||
List<Resource> 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<Resource> comparator = new Comparator<Resource>() {
|
||||
@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<String> expectedTypes = new HashSet<>();
|
||||
expectedTypes.add("MyType1");
|
||||
expectedTypes.add("MyType2");
|
||||
expectedTypes.add("MyType3");
|
||||
|
||||
try (StrolchTransaction tx = persistenceHandler.openTx()) {
|
||||
List<Resource> allResources = tx.getResourceDao().queryAll();
|
||||
Collections.sort(allResources, comparator);
|
||||
assertEquals(resources, allResources);
|
||||
}
|
||||
|
||||
try (StrolchTransaction tx = persistenceHandler.openTx()) {
|
||||
ResourceDao resourceDao = tx.getResourceDao();
|
||||
|
||||
Set<String> types = resourceDao.queryTypes();
|
||||
assertEquals(expectedTypes, types);
|
||||
|
||||
Set<String> keySet = resourceDao.queryKeySet();
|
||||
assertEquals(15, keySet.size());
|
||||
|
||||
for (String type : types) {
|
||||
Set<String> idsByType = resourceDao.queryKeySet(type);
|
||||
assertEquals(5, idsByType.size());
|
||||
|
||||
List<Resource> 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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 <eitch@eitchnet.ch>
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue