Class DerbyConsumerTest
@TestInstance(PER_CLASS)
@TestMethodOrder(org.junit.jupiter.api.MethodOrderer.OrderAnnotation.class)
@DisplayName("Unit tests for DerbyConsumer, minus GUI")
public class DerbyConsumerTest
extends Object
Tests were built for edge conditions for a few specific methods, but the most significant tests run through a full database load and check metadata ('title') and the first and last lines of output tables. As data entry is checked with the supplier, these were largely implemented to check soundness during development.
Reads defaults and first and last lines from application.properties
to allow for simple replacement of data for fundamental tests.
JUnit 5.
Writes files to user directory.
- Author:
- Andy Evans
- Version: 1.0 01 Mar 2021
-
Field Summary
Fields Modifier and Type Field Description private ConnectionconnectionDatabase connection - set up prior to all tests.private DerbyConsumerdataConsumerData consumer to use.private CruTs2pt1SupplierdataSupplierData supplier to use.private StringdefaultDatabaseDirectoryDirectory database is in - gained from properties.private StringdefaultDatasetDefault database name - gained from properties.private StringdefaultFileDirectoryDirectory files are in - gained from properties.private StringdefaultSourceDefault source file - gained from properties.private StringdefaultSource1stLineDefault source file - gained from properties.private StringdefaultSourceLastLineDefault source file - gained from properties.private StringdefaultTableDefault table name - gained from properties.private StringpropertiesDirectoryDirectory for properties files.private StringstoreDatabase location - constructed from default variables. -
Constructor Summary
Constructors Constructor Description DerbyConsumerTest() -
Method Summary
Modifier and Type Method Description (package private) voiddataLoadedTest()Connects to the default database table and checks the first and last lines.voiddisconnect()Cuts database connection.voidfindTitleDefaultTest()Tests whether a missing title setup returns the default.voidfindTitleTest()Tests whether the consumer can find the database title in metadata.(package private) voidloadData()Runs the application to build the database.(package private) voidmetadataLoadedTest()Connects to the default database table and checks the associated metadata table.voidsanitiseNameTest()Test sanitise for a SANITISE_NAME run.voidsanitiseVigorousTest()Test sanitise for a SANITISE_VIGOROUS run.voidsanitiseWeakTest()Test sanitise for a SANITISE_WEAK run.voidsetRecordStoreNamesAsNullTest()Deprecated.Was needed, now of limited excitment.voidsetRecordStoreNamesSanitiseTest()Tests setRecordStoreNames and its sanitisation.voidsetStoreAsNullTest()Tests setStore flags empty Strings as null.voidsetStoreSanitiseTest()Tests setStore and its sanitisation and separator add.voidtableExistsTest()Tests whether the database has the table we expect.
-
Field Details
-
propertiesDirectory
Directory for properties files. -
defaultDatabaseDirectory
Directory database is in - gained from properties. -
defaultFileDirectory
Directory files are in - gained from properties. -
defaultDataset
Default database name - gained from properties. -
defaultTable
Default table name - gained from properties. -
defaultSource
Default source file - gained from properties. -
defaultSource1stLine
Default source file - gained from properties. -
defaultSourceLastLine
Default source file - gained from properties. -
store
Database location - constructed from default variables. -
connection
Database connection - set up prior to all tests. -
dataSupplier
Data supplier to use. -
dataConsumer
Data consumer to use.
-
-
Constructor Details
-
DerbyConsumerTest
public DerbyConsumerTest()
-
-
Method Details
-
loadData
@BeforeAll @DisplayName("Load data") void loadData()Runs the application to build the database. Uses default locations from the app's META-INF/application.properties file. -
disconnect
@AfterAll @DisplayName("Disconnect from database") public void disconnect()Cuts database connection. -
setStoreAsNullTest
@Test @DisplayName("(setStore) \"\" -> null") public void setStoreAsNullTest()Tests setStore flags empty Strings as null. -
setStoreSanitiseTest
@Test @DisplayName("(setStore) unsanitisedString -> sanitisedString") public void setStoreSanitiseTest()Tests setStore and its sanitisation and separator add. -
setRecordStoreNamesAsNullTest
@Test @DisplayName("(setRecordStoreNames) null -> null") @Deprecated public void setRecordStoreNamesAsNullTest()Deprecated.Was needed, now of limited excitment.Just checks sending setRecordStoreNames null returns early leaving them as null. -
setRecordStoreNamesSanitiseTest
@Test @DisplayName("(setRecordStoreNames) unsanitisedStrings -> sanitisedStrings") public void setRecordStoreNamesSanitiseTest()Tests setRecordStoreNames and its sanitisation. -
findTitleDefaultTest
@Test @DisplayName("(findTitle) null -> DEFAULT") public void findTitleDefaultTest()Tests whether a missing title setup returns the default.Note that this is not the same as returning a default for an empty string (the starting point for Metadata), though maybe it should be.
-
findTitleTest
@Test @DisplayName("(findTitle) title -> title") public void findTitleTest()Tests whether the consumer can find the database title in metadata. -
sanitiseVigorousTest
@Test @DisplayName("(sanitise(SANITISE_VIGOROUS)) unsanitisedString -> sanitisedString") public void sanitiseVigorousTest()Test sanitise for a SANITISE_VIGOROUS run. -
sanitiseNameTest
@Test @DisplayName("(sanitise(SANITISE_NAME)) unsanitisedString -> sanitisedString") public void sanitiseNameTest()Test sanitise for a SANITISE_NAME run. -
sanitiseWeakTest
@Test @DisplayName("(sanitise(SANITISE_WEAK)) unsanitisedString -> sanitisedString") public void sanitiseWeakTest()Test sanitise for a SANITISE_WEAK run. -
tableExistsTest
@Order(1) @Test @DisplayName("Test table exists") public void tableExistsTest()Tests whether the database has the table we expect.Uses default table name from the app's META-INF/application.properties file.
-
dataLoadedTest
@Order(2) @Test @DisplayName("Data is loaded into database") void dataLoadedTest()Connects to the default database table and checks the first and last lines.Uses default name from the app's META-INF/application.properties file along with first and last line from the same file.
Validates on first and last lines.
-
metadataLoadedTest
@Order(3) @Test @DisplayName("Metadata is loaded into database") void metadataLoadedTest()Connects to the default database table and checks the associated metadata table.Validates on title.
Uses default name from the app's META-INF/application.properties file.
-