Skip to content

Commit

Permalink
Be even more declarative
Browse files Browse the repository at this point in the history
  • Loading branch information
zapodot committed Nov 5, 2019
1 parent c282761 commit 4a9d141
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 59 deletions.
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ libraryDependencies += "org.zapodot" % "embedded-db-junit" % "2.0-BETA1" % "test
#### Junit 5.X Jupiter
##### Declarative style using annotations
```java
@ExtendWith(EmbeddedDatabaseExtension.class)
@DataSourceConfig(
@EmbeddedDatabaseTest(
engine = Engine.HSQLDB
)
class EmbeddedDatabaseExtensionExtendWithTest {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
package org.zapodot.junit.db;

import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;
import org.junit.jupiter.api.extension.TestInstancePostProcessor;
import org.junit.jupiter.api.extension.*;
import org.junit.platform.commons.util.AnnotationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zapodot.junit.db.annotations.ConfigurationProperty;
import org.zapodot.junit.db.annotations.DataSourceConfig;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;
import org.zapodot.junit.db.common.CompatibilityMode;
import org.zapodot.junit.db.common.EmbeddedDatabaseCreator;
import org.zapodot.junit.db.common.Engine;
Expand Down Expand Up @@ -181,14 +175,14 @@ private String extractNameFromExtensionContext(final ExtensionContext extensionC
private static Optional<InternalEmbeddedDatabaseCreator> tryToCreateFromExtensionContext(final ExtensionContext extensionContext) {

LOGGER.debug("Constructing DataSource configuration using annotations");
final Optional<DataSourceConfig> dataSourceConfig = findAnnotation(extensionContext.getElement(),
DataSourceConfig.class);
final Optional<EmbeddedDatabaseTest> dataSourceConfig = findAnnotation(extensionContext.getElement(),
EmbeddedDatabaseTest.class);
if (!dataSourceConfig.isPresent()) {
LOGGER.warn(
"No configuration found. There should be an @DataSourceConfig annotation on either the test class or the method");
return Optional.empty();
} else {
final DataSourceConfig dataSourceConfigValue = dataSourceConfig.get();
final EmbeddedDatabaseTest dataSourceConfigValue = dataSourceConfig.get();
final Builder builder;
if (Engine.HSQLDB.equals(dataSourceConfigValue.engine())) {
builder = Builder.hsqldb();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
package org.zapodot.junit.db.annotations;

import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.EmbeddedDatabaseExtension;
import org.zapodot.junit.db.common.CompatibilityMode;
import org.zapodot.junit.db.common.Engine;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;

/**
* Configuration for the Embedded database server.
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DataSourceConfig {
@ExtendWith(EmbeddedDatabaseExtension.class)
public @interface EmbeddedDatabaseTest {

/**
* Engine to use for the embedded database
Expand Down Expand Up @@ -59,5 +54,4 @@
* @return
*/
String[] initialSqlResources() default {};

}
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package org.zapodot.junit.db;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.annotations.DataSourceConfig;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;
import org.zapodot.junit.db.common.Engine;

import javax.sql.DataSource;

import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(EmbeddedDatabaseExtension.class)
@DataSourceConfig(
engine = Engine.HSQLDB
)
@EmbeddedDatabaseTest(engine = Engine.HSQLDB)
class EmbeddedDatabaseExtensionExtendWithTest {


Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package org.zapodot.junit.db;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.annotations.DataSourceConfig;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;
import org.zapodot.junit.db.common.Engine;

import java.sql.Connection;
Expand All @@ -15,11 +14,7 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

@ExtendWith(EmbeddedDatabaseExtension.class)
@DataSourceConfig(
engine = Engine.H2,
initialSqlResources = "classpath:create-tables.sql"
)
@EmbeddedDatabaseTest(engine = Engine.H2, initialSqlResources = "classpath:create-tables.sql")
class EmbeddedDatabaseExtensionHasSQLResourcesH2Test {

@EmbeddedDatabase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package org.zapodot.junit.db;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.annotations.DataSourceConfig;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;
import org.zapodot.junit.db.common.Engine;

import java.sql.Connection;
Expand All @@ -13,11 +12,7 @@

import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(EmbeddedDatabaseExtension.class)
@DataSourceConfig(
engine = Engine.HSQLDB,
initialSqlResources = "classpath:create-tables.sql"
)
@EmbeddedDatabaseTest(engine = Engine.HSQLDB, initialSqlResources = "classpath:create-tables.sql")
class EmbeddedDatabaseExtensionHasSQLResourcesTest {

@EmbeddedDatabase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
package org.zapodot.junit.db;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.annotations.DataSourceConfig;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.common.Engine;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;

import javax.sql.DataSource;
import java.sql.Connection;

import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

@ExtendWith(EmbeddedDatabaseExtension.class)
@DataSourceConfig(engine = Engine.HSQLDB)
@EmbeddedDatabaseTest
class EmbeddedDatabaseExtensionParameterTest {
@Test
void dataSourceAsParameter(@EmbeddedDatabase final DataSource dataSource) {
Expand Down
18 changes: 8 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,20 @@
<guava.version>28.1-jre</guava.version>
<h2.version>1.4.200</h2.version>
<hsqldb.version>2.5.0</hsqldb.version>
<jacoco-maven-plugin.version>0.8.2</jacoco-maven-plugin.version>
<jacoco-maven-plugin.version>0.8.5</jacoco-maven-plugin.version>
<java.version>1.8</java.version>
<jdbi.version>2.78</jdbi.version>
<junit.version>4.12</junit.version>
<junit-jupiter.version>5.5.2</junit-jupiter.version>
<liquibase.version>3.8.0</liquibase.version>
<maven-build-info-plugin.version>1.2</maven-build-info-plugin.version>
<maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
<maven-build-info-plugin.version>1.3</maven-build-info-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
<maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
<maven-git-commit-id-plugin.version>2.2.5</maven-git-commit-id-plugin.version>
<maven-git-commit-id-plugin.version>3.0.1</maven-git-commit-id-plugin.version>
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
<maven-javadoc-plugin.version>3.0.1</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.0.1</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.1.0</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.1.0</maven-source-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<mockito.version>3.1.0</mockito.version>
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
Expand All @@ -39,9 +39,6 @@
<sql2o.version>1.6.0</sql2o.version>
<hamcrest.version>2.2</hamcrest.version>
</properties>
<prerequisites>
<maven>3.2.0</maven>
</prerequisites>
<name>${project.artifactId}</name>
<description>Library that provides a JUnit rule for setting up unit test using an embedded in-memory database (H2)
</description>
Expand Down Expand Up @@ -285,6 +282,7 @@
<![CDATA[Copyright &#169; 2014&#x2014;{currentYear} <a href="http://zapodot.org">Sondre Eikanger Kval&oslash;</a>. All rights reserved..]]>
</bottom>
<doclint>none</doclint>
<source>8</source>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -391,7 +389,7 @@
<configuration>
<rules>
<requireMavenVersion>
<version>3.2.0</version>
<version>3.6.0</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${java.version}</version>
Expand Down

0 comments on commit 4a9d141

Please sign in to comment.