diff --git a/.gitattributes b/.gitattributes
index 53d70c3..34ceb76 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4,4 +4,4 @@
# Denote all files that are truly binary and should not be modified.
*.png binary
-*.jpg binary
\ No newline at end of file
+*.jpg binary
diff --git a/.gitignore b/.gitignore
index e7f0c88..5cd220a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,17 @@
+## travis-ci
+!.travis.yml
+!.codecov.yml
+
## maven
target/
target-test/
+!.mvn
## linux
.*
!.git*
-*~
## windows
@@ -20,7 +24,7 @@ Desktop.ini
$RECYCLE.BIN/
-## osx
+## macOS
.DS_Store
.AppleDouble
.LSOverride
@@ -85,9 +89,9 @@ tramp
*.un~
Session.vim
.netrwhist
-*~
build
+out/
+build/
.gradle
*.log
-out
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 8b54da6..ba47bd2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,9 @@
language: java
jdk:
- - oraclejdk8
+ - openjdk8
+ - openjdk9
+ - openjdk10
after_success:
- bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
diff --git a/adapter-commons/build.gradle b/adapter-commons/build.gradle
index a6ff458..bdec774 100644
--- a/adapter-commons/build.gradle
+++ b/adapter-commons/build.gradle
@@ -1,7 +1,12 @@
dependencies {
- compile("org.springframework.boot:spring-boot-starter-data-jpa")
- compile("org.springframework.boot:spring-boot-starter-data-rest")
- compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.5")
- compile("org.liquibase:liquibase-core:3.5.5")
- testCompile("org.springframework.boot:spring-boot-starter-test")
-}
\ No newline at end of file
+ compile("org.springframework.boot:spring-boot-starter-data-jpa")
+ compile("org.springframework.boot:spring-boot-starter-data-rest")
+ compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.6")
+ compile("com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.6")
+ compile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.6")
+ compile("org.liquibase:liquibase-core:3.6.1")
+ compile("javax.xml.bind:jaxb-api:2.3.0")
+ runtime("org.postgresql:postgresql:42.2.2")
+
+ testCompile("org.springframework.boot:spring-boot-starter-test")
+}
diff --git a/adapter-commons/pom.xml b/adapter-commons/pom.xml
index 656a552..2787291 100644
--- a/adapter-commons/pom.xml
+++ b/adapter-commons/pom.xml
@@ -15,6 +15,11 @@
+
+ org.projectlombok
+ lombok
+ 1.18.0
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -26,18 +31,34 @@
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
- 2.8.5
+ 2.9.6
+
+
+ org.postgresql
+ postgresql
+ 42.2.2
+ runtime
+
+
+ org.liquibase
+ liquibase-core
+ 3.6.1
+
+
+ net.bytebuddy
+ byte-buddy
+ 1.8.12
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.0
org.springframework.boot
spring-boot-starter-test
test
-
- org.liquibase
- liquibase-core
- 3.5.5
-
@@ -46,7 +67,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
diff --git a/adapter-commons/src/main/java/io/dddbyexamples/tools/JsonConverter.java b/adapter-commons/src/main/java/io/dddbyexamples/tools/JsonConverter.java
index c7b355d..722eed7 100644
--- a/adapter-commons/src/main/java/io/dddbyexamples/tools/JsonConverter.java
+++ b/adapter-commons/src/main/java/io/dddbyexamples/tools/JsonConverter.java
@@ -1,11 +1,14 @@
package io.dddbyexamples.tools;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import javax.persistence.AttributeConverter;
import java.io.IOException;
@@ -20,6 +23,8 @@ public abstract class JsonConverter implements AttributeConverter
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.enable(SerializationFeature.WRITE_DATES_WITH_ZONE_ID)
.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
+ .registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
+ .registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
private final Class type;
diff --git a/adapter-commons/src/test/resources/application.properties b/adapter-commons/src/main/resources/application-test.properties
similarity index 100%
rename from adapter-commons/src/test/resources/application.properties
rename to adapter-commons/src/main/resources/application-test.properties
diff --git a/adapter-commons/src/test/java/io/dddbyexamples/tools/IntegrationTest.java b/adapter-commons/src/test/java/io/dddbyexamples/tools/IntegrationTest.java
deleted file mode 100644
index 8d412b7..0000000
--- a/adapter-commons/src/test/java/io/dddbyexamples/tools/IntegrationTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package io.dddbyexamples.tools;
-
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.core.annotation.AliasFor;
-import org.springframework.test.context.ActiveProfiles;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-@SpringBootTest
-@ActiveProfiles
-public @interface IntegrationTest {
- @AliasFor(annotation = ActiveProfiles.class, attribute = "profiles") String[] activeProfiles() default {"test"};
-}
diff --git a/app-monolith/build.gradle b/app-monolith/build.gradle
index b46b266..2392472 100644
--- a/app-monolith/build.gradle
+++ b/app-monolith/build.gradle
@@ -1,45 +1,38 @@
apply plugin: 'groovy'
dependencies {
- compile(project(":demand-forecasting-adapters"))
- compile(project(":shortages-prediction-adapters"))
- compile(project(":product-management-adapters"))
- compile(project(":production-planning-adapters"))
- compile(project(":adapter-commons"))
+ compile(project(":demand-forecasting-adapters"))
+ compile(project(":shortages-prediction-adapters"))
+ compile(project(":product-management-adapters"))
+ compile(project(":production-planning-adapters"))
+ compile(project(":adapter-commons"))
- compile("org.projectlombok:lombok:1.16.18")
- compile("org.springframework.boot:spring-boot-starter-data-jpa")
- compile("org.springframework.boot:spring-boot-starter-web")
- compile("org.springframework.boot:spring-boot-starter-data-rest")
- compile("org.springframework.data:spring-data-rest-hal-browser")
- compile("org.springframework.boot:spring-boot-starter-cloud-connectors")
- compile("org.liquibase:liquibase-core:3.5.5")
- compile("net.bytebuddy:byte-buddy:1.7.9")
+ compile("org.springframework.boot:spring-boot-starter-data-jpa")
+ compile("org.springframework.boot:spring-boot-starter-web")
+ compile("org.springframework.boot:spring-boot-starter-data-rest")
+ compile("org.springframework.data:spring-data-rest-hal-browser")
+ compile("org.springframework.boot:spring-boot-starter-cloud-connectors")
- runtime("org.cloudfoundry:auto-reconfiguration:1.12.0.RELEASE")
- runtime("org.postgresql:postgresql:42.1.4")
+ runtime("org.cloudfoundry:auto-reconfiguration:1.12.0.RELEASE")
- testCompile("org.springframework.boot:spring-boot-starter-test")
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
- testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
- testCompile("com.h2database:h2:1.4.194")
- // TODO: Because of this there's no up to date check from Gradle
- testCompile(project(":adapter-commons").sourceSets.test.output)
+ testCompile("org.springframework.boot:spring-boot-starter-test")
+ testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
+ testCompile("com.h2database:h2:1.4.197")
}
[bootJar, bootRun]*.enabled = true
jar.enabled = false
task stubsJar(type: Jar) {
- classifier = "stubs"
- into("META-INF/${project.rootProject.ext.projectGroupId}/${project.rootProject.ext.projectArtifactId}/${project.rootProject.ext.projectVersion}/shortages-prediction-adapters/mappings") {
- include('**/*.*')
- from(project(":shortages-prediction-adapters").projectDir.absolutePath + "/target/generated-snippets/stubs")
- }
- into("META-INF/${project.rootProject.ext.projectGroupId}/${project.rootProject.ext.projectArtifactId}/${project.rootProject.ext.projectVersion}/shortages-prediction-adapters/contracts") {
- include('**/*.groovy')
- from(project(":shortages-prediction-adapters").projectDir.absolutePath + "/target/generated-snippets/contracts")
- }
+ classifier = "stubs"
+ into("META-INF/${project.rootProject.ext.projectGroupId}/${project.rootProject.ext.projectArtifactId}/${project.rootProject.ext.projectVersion}/shortages-prediction-adapters/mappings") {
+ include('**/*.*')
+ from(project(":shortages-prediction-adapters").projectDir.absolutePath + "/target/generated-snippets/stubs")
+ }
+ into("META-INF/${project.rootProject.ext.projectGroupId}/${project.rootProject.ext.projectArtifactId}/${project.rootProject.ext.projectVersion}/shortages-prediction-adapters/contracts") {
+ include('**/*.groovy')
+ from(project(":shortages-prediction-adapters").projectDir.absolutePath + "/target/generated-snippets/contracts")
+ }
}
// we need the tests to pass to build the stub jar
@@ -47,16 +40,16 @@ stubsJar.dependsOn(test)
stubsJar.dependsOn(project(":shortages-prediction-adapters").test)
artifacts {
- archives stubsJar
+ archives stubsJar
}
jar.dependsOn(stubsJar)
publishing {
- publications {
- stubs(MavenPublication) {
- artifactId project.name
- artifact stubsJar
- }
- }
-}
\ No newline at end of file
+ publications {
+ stubs(MavenPublication) {
+ artifactId project.name
+ artifact stubsJar
+ }
+ }
+}
diff --git a/app-monolith/pom.xml b/app-monolith/pom.xml
index 83c734d..d36b9f6 100644
--- a/app-monolith/pom.xml
+++ b/app-monolith/pom.xml
@@ -22,7 +22,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -60,7 +60,6 @@
production-planning-adapters
1.0-SNAPSHOT
-
pl.com.dddbyexamples
adapter-commons
@@ -74,12 +73,6 @@
test
-
- org.projectlombok
- lombok
- 1.16.18
- provided
-
org.springframework.boot
spring-boot-starter-data-jpa
@@ -101,12 +94,6 @@
spring-boot-starter-test
test
-
- org.postgresql
- postgresql
- 42.1.4
- runtime
-
org.cloudfoundry
auto-reconfiguration
@@ -117,11 +104,6 @@
org.springframework.boot
spring-boot-starter-cloud-connectors
-
- org.liquibase
- liquibase-core
- 3.5.5
-
org.spockframework
spock-core
@@ -137,14 +119,9 @@
com.h2database
h2
- 1.4.194
+ 1.4.197
test
-
- net.bytebuddy
- byte-buddy
- 1.7.9
-
@@ -166,10 +143,11 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.7.0
-
- -parameters
-
+ 1.8
+ 1.8
+ -parameters
@@ -187,7 +165,7 @@
maven-surefire-plugin
- 2.20.1
+ ${maven-surefire.version}
false
diff --git a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/CallOffDocumentIntegrationSpec.groovy b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/CallOffDocumentIntegrationSpec.groovy
index b558caf..34e66ed 100644
--- a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/CallOffDocumentIntegrationSpec.groovy
+++ b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/CallOffDocumentIntegrationSpec.groovy
@@ -1,5 +1,10 @@
package io.dddbyexamples.factory.integration
+import io.dddbyexamples.factory.AppConfiguration
+import io.dddbyexamples.factory.ProductTrait
+import io.dddbyexamples.factory.demand.forecasting.persistence.DocumentEntity
+import io.dddbyexamples.factory.demand.forecasting.projection.CurrentDemandEntity
+import io.dddbyexamples.factory.product.management.ProductDescriptionEntity
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.web.client.TestRestTemplate
@@ -9,12 +14,7 @@ import org.springframework.core.ParameterizedTypeReference
import org.springframework.hateoas.Resources
import org.springframework.http.HttpMethod
import org.springframework.http.ResponseEntity
-import io.dddbyexamples.factory.AppConfiguration
-import io.dddbyexamples.factory.ProductTrait
-import io.dddbyexamples.factory.demand.forecasting.persistence.DocumentEntity
-import io.dddbyexamples.factory.demand.forecasting.projection.CurrentDemandEntity
-import io.dddbyexamples.factory.product.management.ProductDescriptionEntity
-import io.dddbyexamples.tools.IntegrationTest
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Specification
import java.time.Clock
@@ -24,28 +24,29 @@ import static java.time.Instant.from
import static java.time.ZoneId.systemDefault
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT
-@IntegrationTest
+@ActiveProfiles("test")
@SpringBootTest(webEnvironment = RANDOM_PORT, classes = [AppConfiguration, TestConfiguration])
class CallOffDocumentIntegrationSpec extends Specification implements ProductTrait {
public static final String PRODUCT_REF_NO = "3009000"
public static final LocalDate ANY_DATE = LocalDate.now()
- @Autowired TestRestTemplate restTemplate
+ @Autowired
+ TestRestTemplate restTemplate
def 'receiving call off document should create new product demands for subsequent days'() {
given:
- productDescriptionIsSuccessfullyCreated(PRODUCT_REF_NO)
+ productDescriptionIsSuccessfullyCreated(PRODUCT_REF_NO)
when:
- callOffDocumentIsSuccessfullyRequested(PRODUCT_REF_NO, ANY_DATE, 100, 200, 300)
+ callOffDocumentIsSuccessfullyRequested(PRODUCT_REF_NO, ANY_DATE, 100, 200, 300)
and:
- Collection demands =
- demandsForProductStartingFromDateAreRequested(PRODUCT_REF_NO, ANY_DATE.minusDays(1))
+ Collection demands =
+ demandsForProductStartingFromDateAreRequested(PRODUCT_REF_NO, ANY_DATE.minusDays(1))
then:
- demands.size() == 3
- thereIsDemand(demands, ANY_DATE, 100)
- thereIsDemand(demands, ANY_DATE.plusDays(1), 200)
- thereIsDemand(demands, ANY_DATE.plusDays(2), 300)
+ demands.size() == 3
+ thereIsDemand(demands, ANY_DATE, 100)
+ thereIsDemand(demands, ANY_DATE.plusDays(1), 200)
+ thereIsDemand(demands, ANY_DATE.plusDays(2), 300)
}
void productDescriptionIsSuccessfullyCreated(String refNo) {
diff --git a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/DemandAdjustmentIntegrationSpec.groovy b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/DemandAdjustmentIntegrationSpec.groovy
index 0cbef43..5f4af90 100644
--- a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/DemandAdjustmentIntegrationSpec.groovy
+++ b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/DemandAdjustmentIntegrationSpec.groovy
@@ -5,6 +5,7 @@ import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.web.client.TestRestTemplate
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
+import org.springframework.context.annotation.Profile
import org.springframework.core.ParameterizedTypeReference
import org.springframework.hateoas.Resources
import org.springframework.http.HttpMethod
@@ -17,7 +18,7 @@ import io.dddbyexamples.factory.demand.forecasting.command.DemandAdjustmentEntit
import io.dddbyexamples.factory.demand.forecasting.persistence.DocumentEntity
import io.dddbyexamples.factory.demand.forecasting.projection.CurrentDemandEntity
import io.dddbyexamples.factory.product.management.ProductDescriptionEntity
-import io.dddbyexamples.tools.IntegrationTest
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Specification
import java.time.Clock
@@ -27,7 +28,7 @@ import static java.time.Instant.from
import static java.time.ZoneId.systemDefault
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT
-@IntegrationTest
+@ActiveProfiles("test")
@SpringBootTest(webEnvironment = RANDOM_PORT, classes = [AppConfiguration, TestConfiguration])
class DemandAdjustmentIntegrationSpec extends Specification implements ProductTrait {
diff --git a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/ShortageIntegrationSpec.groovy b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/ShortageIntegrationSpec.groovy
index 1ef92f7..dc10905 100644
--- a/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/ShortageIntegrationSpec.groovy
+++ b/app-monolith/src/test/groovy/io/dddbyexamples/factory/integration/ShortageIntegrationSpec.groovy
@@ -1,14 +1,5 @@
package io.dddbyexamples.factory.integration
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.boot.test.web.client.TestRestTemplate
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.Configuration
-import org.springframework.core.ParameterizedTypeReference
-import org.springframework.hateoas.Resource
-import org.springframework.http.HttpMethod
-import org.springframework.http.ResponseEntity
import io.dddbyexamples.factory.AppConfiguration
import io.dddbyexamples.factory.ProductTrait
import io.dddbyexamples.factory.demand.forecasting.Adjustment
@@ -19,7 +10,16 @@ import io.dddbyexamples.factory.product.management.ProductDescriptionEntity
import io.dddbyexamples.factory.shortages.prediction.calculation.Stock
import io.dddbyexamples.factory.shortages.prediction.monitoring.persistence.ShortagesEntity
import io.dddbyexamples.factory.warehouse.WarehouseService
-import io.dddbyexamples.tools.IntegrationTest
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.boot.test.web.client.TestRestTemplate
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.core.ParameterizedTypeReference
+import org.springframework.hateoas.Resource
+import org.springframework.http.HttpMethod
+import org.springframework.http.ResponseEntity
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Specification
import java.time.Clock
@@ -29,7 +29,7 @@ import static java.time.Instant.from
import static java.time.ZoneId.systemDefault
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT
-@IntegrationTest
+@ActiveProfiles("test")
@SpringBootTest(webEnvironment = RANDOM_PORT, classes = [AppConfiguration, TestConfiguration])
class ShortageIntegrationSpec extends Specification implements ProductTrait {
@@ -37,17 +37,18 @@ class ShortageIntegrationSpec extends Specification implements ProductTrait {
public static final LocalDate ANY_DATE = LocalDate.now()
public static final int PRODUCT_STOCK_LEVEL = 100
- @Autowired TestRestTemplate restTemplate
+ @Autowired
+ TestRestTemplate restTemplate
def 'adjustment that exceeds current stock level should result in shortage'() {
given:
- productDescriptionIsSuccessfullyCreated(PRODUCT_REF_NO)
+ productDescriptionIsSuccessfullyCreated(PRODUCT_REF_NO)
when:
- callOffDocumentIsSuccessfullyRequested(PRODUCT_REF_NO, ANY_DATE, PRODUCT_STOCK_LEVEL)
+ callOffDocumentIsSuccessfullyRequested(PRODUCT_REF_NO, ANY_DATE, PRODUCT_STOCK_LEVEL)
and:
- adjustmentIsSuccessfullyRequested(ANY_DATE.plusDays(1), 200)
+ adjustmentIsSuccessfullyRequested(ANY_DATE.plusDays(1), 200)
then:
- thereIsShortage(PRODUCT_REF_NO, ANY_DATE.plusDays(1), 200)
+ thereIsShortage(PRODUCT_REF_NO, ANY_DATE.plusDays(1), 200)
}
diff --git a/build.gradle b/build.gradle
index e6f5bc3..e1e0e57 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,94 +1,105 @@
buildscript {
- repositories {
- mavenCentral()
- mavenLocal()
- maven { url "http://repo.spring.io/snapshot" }
- maven { url "http://repo.spring.io/milestone" }
- maven { url "http://repo.spring.io/release" }
- }
- dependencies {
- classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE"
- // TODO: Snapshots are used only for testing purposes
- classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:2.0.0.BUILD-SNAPSHOT"
- }
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url "http://repo.spring.io/snapshot" }
+ maven { url "http://repo.spring.io/milestone" }
+ maven { url "http://repo.spring.io/release" }
+ }
+ dependencies {
+ classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE"
+ // TODO: Snapshots are used only for testing purposes
+ classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:2.0.0.BUILD-SNAPSHOT"
+ }
}
allprojects {
- apply plugin: 'java'
- apply plugin: 'org.springframework.boot'
- apply plugin: 'io.spring.dependency-management'
- apply plugin: 'maven-publish'
+ apply plugin: 'java'
+ apply plugin: 'org.springframework.boot'
+ apply plugin: 'io.spring.dependency-management'
+ apply plugin: 'maven-publish'
- group = 'pl.com.dddbyexamples'
- version = getProp('newVersion') ?: '1.0-SNAPSHOT'
+ group = 'pl.com.dddbyexamples'
+ version = getProp('newVersion') ?: '1.0-SNAPSHOT'
- apply from: project.rootDir.absolutePath + '/gradle/pipeline.gradle'
+ apply from: project.rootDir.absolutePath + '/gradle/pipeline.gradle'
- bootJar.enabled = false
- jar.enabled = true
- bootRun.enabled = false
+ bootJar.enabled = false
+ jar.enabled = true
+ bootRun.enabled = false
- dependencyManagement {
- imports {
- mavenBom "org.springframework.cloud:spring-cloud-dependencies:${BOM_VERSION}"
- }
- }
+ compileJava.options.compilerArgs << '-parameters'
+ compileTestJava.options.compilerArgs << '-parameters'
- repositories {
- mavenCentral()
- mavenLocal()
- if (getProp("M2_LOCAL")) {
- maven {
- url getProp("M2_LOCAL")
- }
- }
- maven { url "http://repo.spring.io/snapshot" }
- maven { url "http://repo.spring.io/milestone" }
- maven { url "http://repo.spring.io/release" }
- }
+ dependencies {
+ compileOnly('org.projectlombok:lombok:1.18.0')
+ annotationProcessor('org.projectlombok:lombok:1.18.0')
- publishing {
- repositories {
- maven {
- url getProp('REPO_WITH_BINARIES_FOR_UPLOAD') ?:
- getProp('REPO_WITH_BINARIES') ?: 'http://localhost:8081/artifactory/libs-release-local'
- credentials {
- username getProp('M2_SETTINGS_REPO_USERNAME') ?: 'admin'
- password getProp('M2_SETTINGS_REPO_PASSWORD') ?: 'password'
- }
- }
- }
- publications {
- mavenJava(MavenPublication) {
- artifactId project.name
- from components.java
- }
- }
- }
+ testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
+ testCompile("net.bytebuddy:byte-buddy:1.8.12")
+ }
- tasks.withType(Test) {
- testLogging {
- events "started", "passed", "skipped", "failed"
- }
- }
+ dependencyManagement {
+ imports {
+ mavenBom "org.springframework.cloud:spring-cloud-dependencies:${BOM_VERSION}"
+ }
+ }
+
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ if (getProp("M2_LOCAL")) {
+ maven {
+ url getProp("M2_LOCAL")
+ }
+ }
+ maven { url "http://repo.spring.io/snapshot" }
+ maven { url "http://repo.spring.io/milestone" }
+ maven { url "http://repo.spring.io/release" }
+ }
+
+ publishing {
+ repositories {
+ maven {
+ url getProp('REPO_WITH_BINARIES_FOR_UPLOAD') ?:
+ getProp('REPO_WITH_BINARIES') ?: 'http://localhost:8081/artifactory/libs-release-local'
+ credentials {
+ username getProp('M2_SETTINGS_REPO_USERNAME') ?: 'admin'
+ password getProp('M2_SETTINGS_REPO_PASSWORD') ?: 'password'
+ }
+ }
+ }
+ publications {
+ mavenJava(MavenPublication) {
+ artifactId project.name
+ from components.java
+ }
+ }
+ }
+
+ tasks.withType(Test) {
+ testLogging {
+ events "started", "passed", "skipped", "failed"
+ }
+ }
}
ext {
- projectGroupId = project.group
- // In a multi-module env we can specify which project is the one that produces the fat-jar
- projectArtifactId = "app-monolith"
- projectVersion = project.version
+ projectGroupId = project.group
+ // In a multi-module env we can specify which project is the one that produces the fat-jar
+ projectArtifactId = "app-monolith"
+ projectVersion = project.version
}
apply plugin: "java"
[bootJar, bootRun]*.enabled = false
task wrapper(type: Wrapper) {
- gradleVersion = '4.8'
+ gradleVersion = '4.8'
}
String getProp(String propName) {
- return hasProperty(propName) ?
- (getProperty(propName) ?: System.properties[propName]) : System.properties[propName] ?:
- System.getenv(propName)
-}
\ No newline at end of file
+ return hasProperty(propName) ?
+ (getProperty(propName) ?: System.properties[propName]) : System.properties[propName] ?:
+ System.getenv(propName)
+}
diff --git a/demand-forecasting-adapters/build.gradle b/demand-forecasting-adapters/build.gradle
index 80cbe04..972d3df 100644
--- a/demand-forecasting-adapters/build.gradle
+++ b/demand-forecasting-adapters/build.gradle
@@ -4,13 +4,7 @@ dependencies {
compile(project(":demand-forecasting-model"))
compile(project(":adapter-commons"))
- compile("org.projectlombok:lombok:1.16.18")
-
- runtime("org.postgresql:postgresql:42.1.4")
-
testCompile("org.springframework.boot:spring-boot-starter-test")
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
testCompile("com.h2database:h2:1.4.194")
- testCompile(project(":adapter-commons").sourceSets.test.output)
-}
\ No newline at end of file
+}
diff --git a/demand-forecasting-adapters/pom.xml b/demand-forecasting-adapters/pom.xml
index c1126bf..c1791fc 100644
--- a/demand-forecasting-adapters/pom.xml
+++ b/demand-forecasting-adapters/pom.xml
@@ -33,23 +33,11 @@
test
-
- org.projectlombok
- lombok
- 1.16.18
- provided
-
org.springframework.boot
spring-boot-starter-test
test
-
- org.postgresql
- postgresql
- 42.1.4
- runtime
-
org.spockframework
spock-core
@@ -62,12 +50,6 @@
1.1-groovy-2.4
test
-
- net.bytebuddy
- byte-buddy
- 1.7.9
- test
-
com.h2database
h2
@@ -83,7 +65,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -118,15 +100,16 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.7.0
-
- -parameters
-
+ 1.8
+ 1.8
+ -parameters
maven-surefire-plugin
- 2.20.1
+ 2.22.0
false
diff --git a/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java b/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
index b2e3328..6365da0 100644
--- a/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
+++ b/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
@@ -1,5 +1,6 @@
package io.dddbyexamples.factory.delivery.planning;
+import io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinition;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinitionDao;
@@ -17,6 +18,7 @@ public class DeliveryAutoPlannerORMRepository {
return new DeliveryAutoPlanner(refNo,
dao.findById(refNo)
.map(DeliveryPlannerDefinitionEntity::getDefinition)
+ .filter(def -> !def.isDisabled())
.map(x -> x.map(DeliveriesSuggestion::timesAndFractions))
.orElse(Collections.emptyMap()));
}
diff --git a/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/definition/DeliveryPlannerDefinition.java b/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/definition/DeliveryPlannerDefinition.java
index 2387171..4f0cb98 100644
--- a/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/definition/DeliveryPlannerDefinition.java
+++ b/demand-forecasting-adapters/src/main/java/io/dddbyexamples/factory/delivery/planning/definition/DeliveryPlannerDefinition.java
@@ -18,6 +18,7 @@ import java.util.stream.Collectors;
public class DeliveryPlannerDefinition {
@Singular
private final Map> definitions;
+ private final boolean disabled;
public static Map of(LocalTime time, Double fraction) {
return Collections.singletonMap(time, fraction);
diff --git a/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/delivery/planning/DeliveryPlannerDefinitionSpec.groovy b/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/delivery/planning/DeliveryPlannerDefinitionSpec.groovy
index 1243708..146b8b8 100644
--- a/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/delivery/planning/DeliveryPlannerDefinitionSpec.groovy
+++ b/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/delivery/planning/DeliveryPlannerDefinitionSpec.groovy
@@ -5,12 +5,15 @@ import org.springframework.boot.test.context.SpringBootTest
import io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinition
import io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinitionDao
import io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinitionEntity
+import org.springframework.test.context.ActiveProfiles
+import org.springframework.test.context.TestPropertySource
import spock.lang.Specification
import static java.time.LocalTime.of as time
import static io.dddbyexamples.factory.delivery.planning.definition.DeliveryPlannerDefinition.of
import static io.dddbyexamples.factory.demand.forecasting.Demand.Schema.*
+@ActiveProfiles("test")
@SpringBootTest
class DeliveryPlannerDefinitionSpec extends Specification {
diff --git a/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/ProductDemandORMRepositorySpec.groovy b/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/ProductDemandORMRepositorySpec.groovy
index a1d0b23..3f5a34b 100644
--- a/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/ProductDemandORMRepositorySpec.groovy
+++ b/demand-forecasting-adapters/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/ProductDemandORMRepositorySpec.groovy
@@ -1,24 +1,22 @@
package io.dddbyexamples.factory.demand.forecasting
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.annotation.Commit
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
import io.dddbyexamples.factory.demand.forecasting.persistence.DemandDao
import io.dddbyexamples.factory.demand.forecasting.persistence.DemandEntity
import io.dddbyexamples.factory.demand.forecasting.persistence.ProductDemandDao
import io.dddbyexamples.factory.demand.forecasting.persistence.ProductDemandEntity
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Specification
import javax.persistence.EntityManager
-import javax.transaction.Transactional
import java.time.Clock
import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
-@SpringBootTest
-@Transactional
-@Commit
+@ActiveProfiles("test")
+@DataJpaTest
class ProductDemandORMRepositorySpec extends Specification {
def clock = Clock.fixed(Instant.now(), ZoneId.systemDefault())
diff --git a/demand-forecasting-model/build.gradle b/demand-forecasting-model/build.gradle
index 9a0d5b7..aad9908 100644
--- a/demand-forecasting-model/build.gradle
+++ b/demand-forecasting-model/build.gradle
@@ -1,10 +1,6 @@
apply plugin: 'groovy'
+apply plugin: "jacoco"
dependencies {
compile(project(":shared-kernel-model"))
- compile(project(":adapter-commons"))
-
- compile("org.projectlombok:lombok:1.16.18")
-
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
-}
\ No newline at end of file
+}
diff --git a/demand-forecasting-model/pom.xml b/demand-forecasting-model/pom.xml
index d3fccd2..0b71b18 100644
--- a/demand-forecasting-model/pom.xml
+++ b/demand-forecasting-model/pom.xml
@@ -16,7 +16,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -42,7 +42,7 @@
org.projectlombok
lombok
- 1.16.18
+ 1.18.0
provided
@@ -72,6 +72,7 @@
+ addTestSources
compileTests
@@ -79,7 +80,7 @@
maven-surefire-plugin
- 2.20.1
+ 2.22.0
false
@@ -91,7 +92,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.0
+ 0.8.1
diff --git a/demand-forecasting-model/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/DemandsFake.groovy b/demand-forecasting-model/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/DemandsFake.groovy
index 3f5e5f2..8a4fd95 100644
--- a/demand-forecasting-model/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/DemandsFake.groovy
+++ b/demand-forecasting-model/src/test/groovy/io/dddbyexamples/factory/demand/forecasting/DemandsFake.groovy
@@ -12,14 +12,6 @@ class DemandsFake extends Demands {
fetch = { date -> nothingDemanded(date) }
}
- DailyDemand nothingDemanded(LocalDate date) {
- def demand = builder.reset()
- .date(date)
- .build()
- fetched.put(date, demand)
- demand
- }
-
DailyDemand demanded(LocalDate date, long level) {
def demand = builder.date(date)
.demandedLevels(level)
@@ -48,4 +40,11 @@ class DemandsFake extends Demands {
fetched.put(date, demand)
demand
}
+
+ private DailyDemand nothingDemanded(LocalDate date) {
+ def demand = builder.reset()
+ .date(date)
+ .build()
+ demand
+ }
}
diff --git a/gradle.properties b/gradle.properties
index 57ed1c5..d765e1c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,2 +1,2 @@
org.gradle.daemon=false
-BOM_VERSION=Finchley.BUILD-SNAPSHOT
\ No newline at end of file
+BOM_VERSION=Finchley.BUILD-SNAPSHOT
diff --git a/lombok.config b/lombok.config
index b10dcbd..f3fa06b 100644
--- a/lombok.config
+++ b/lombok.config
@@ -1,3 +1,2 @@
config.stopBubbling=true
lombok.addLombokGeneratedAnnotation=true
-#lombok.anyConstructor.addConstructorProperties=true
diff --git a/manifest.yml b/manifest.yml
index f53f453..c74ba21 100644
--- a/manifest.yml
+++ b/manifest.yml
@@ -5,4 +5,4 @@ applications:
- app-monolith-db
env:
JAVA_OPTS: -Djava.security.egd=file:///dev/urandom
- TRUST_CERTS: api.run.pivotal.io
\ No newline at end of file
+ TRUST_CERTS: api.run.pivotal.io
diff --git a/pom.xml b/pom.xml
index 53feef2..17269a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
diff --git a/product-management-adapters/build.gradle b/product-management-adapters/build.gradle
index fcab307..b35cf98 100644
--- a/product-management-adapters/build.gradle
+++ b/product-management-adapters/build.gradle
@@ -3,14 +3,7 @@ apply plugin: 'groovy'
dependencies {
compile(project(":adapter-commons"))
- compile("org.projectlombok:lombok:1.16.18")
- compile("net.bytebuddy:byte-buddy:1.7.9")
-
- runtime("org.postgresql:postgresql:42.1.4")
-
testCompile("org.springframework.boot:spring-boot-starter-test")
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
testCompile("com.h2database:h2:1.4.194")
- testCompile(project(":adapter-commons").sourceSets.test.output)
-}
\ No newline at end of file
+}
diff --git a/product-management-adapters/pom.xml b/product-management-adapters/pom.xml
index 0a457eb..36be95f 100644
--- a/product-management-adapters/pom.xml
+++ b/product-management-adapters/pom.xml
@@ -28,12 +28,6 @@
test
-
- org.projectlombok
- lombok
- 1.16.18
- provided
-
org.springframework.boot
spring-boot-starter-test
@@ -42,7 +36,7 @@
org.postgresql
postgresql
- 42.1.4
+ 42.2.2
runtime
@@ -60,7 +54,7 @@
net.bytebuddy
byte-buddy
- 1.7.9
+ 1.8.12
com.h2database
@@ -78,7 +72,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -113,15 +107,16 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.7.0
-
- -parameters
-
+ 1.8
+ 1.8
+ -parameters
maven-surefire-plugin
- 2.20.1
+ 2.22.0
false
diff --git a/product-management-adapters/src/test/groovy/io/dddbyexamples/factory/product/management/ProductDescriptionPersistenceSpec.groovy b/product-management-adapters/src/test/groovy/io/dddbyexamples/factory/product/management/ProductDescriptionPersistenceSpec.groovy
index 437911a..ff6fa39 100644
--- a/product-management-adapters/src/test/groovy/io/dddbyexamples/factory/product/management/ProductDescriptionPersistenceSpec.groovy
+++ b/product-management-adapters/src/test/groovy/io/dddbyexamples/factory/product/management/ProductDescriptionPersistenceSpec.groovy
@@ -1,5 +1,6 @@
package io.dddbyexamples.factory.product.management
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Ignore
import org.springframework.beans.factory.annotation.Autowired
@@ -8,9 +9,8 @@ import spock.lang.Specification
import static java.util.Collections.singletonList
-// TODO: Unignore
-@Ignore
@SpringBootTest
+@ActiveProfiles("test")
class ProductDescriptionPersistenceSpec extends Specification {
@Autowired
diff --git a/production-planning-adapters/build.gradle b/production-planning-adapters/build.gradle
index fcab307..b35cf98 100644
--- a/production-planning-adapters/build.gradle
+++ b/production-planning-adapters/build.gradle
@@ -3,14 +3,7 @@ apply plugin: 'groovy'
dependencies {
compile(project(":adapter-commons"))
- compile("org.projectlombok:lombok:1.16.18")
- compile("net.bytebuddy:byte-buddy:1.7.9")
-
- runtime("org.postgresql:postgresql:42.1.4")
-
testCompile("org.springframework.boot:spring-boot-starter-test")
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
testCompile("com.h2database:h2:1.4.194")
- testCompile(project(":adapter-commons").sourceSets.test.output)
-}
\ No newline at end of file
+}
diff --git a/production-planning-adapters/pom.xml b/production-planning-adapters/pom.xml
index 4c79ad8..9162abb 100644
--- a/production-planning-adapters/pom.xml
+++ b/production-planning-adapters/pom.xml
@@ -28,23 +28,11 @@
test
-
- org.projectlombok
- lombok
- 1.16.18
- provided
-
org.springframework.boot
spring-boot-starter-test
test
-
- org.postgresql
- postgresql
- 42.1.4
- runtime
-
org.spockframework
spock-core
@@ -57,11 +45,6 @@
1.1-groovy-2.4
test
-
- net.bytebuddy
- byte-buddy
- 1.7.9
-
@@ -71,7 +54,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -93,10 +76,11 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.7.0
-
- -parameters
-
+ 1.8
+ 1.8
+ -parameters
diff --git a/sc-pipelines.yml b/sc-pipelines.yml
index 6e694ac..fb1d52e 100644
--- a/sc-pipelines.yml
+++ b/sc-pipelines.yml
@@ -15,4 +15,4 @@ stage:
type: broker
broker: elephantsql
plan: turtle
- useExisting: true
\ No newline at end of file
+ useExisting: true
diff --git a/settings.gradle b/settings.gradle
index 7e6ab6e..be39c41 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,4 +7,4 @@ include "demand-forecasting-adapters"
include "shortages-prediction-model"
include "shortages-prediction-adapters"
include "product-management-adapters"
-include "production-planning-adapters"
\ No newline at end of file
+include "production-planning-adapters"
diff --git a/shared-kernel-model/build.gradle b/shared-kernel-model/build.gradle
index 3e358d9..804f813 100644
--- a/shared-kernel-model/build.gradle
+++ b/shared-kernel-model/build.gradle
@@ -1,7 +1,5 @@
apply plugin: 'groovy'
+apply plugin: "jacoco"
dependencies {
- compile("org.projectlombok:lombok:1.16.18")
-
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
-}
\ No newline at end of file
+}
diff --git a/shared-kernel-model/pom.xml b/shared-kernel-model/pom.xml
index ec69191..b1c9717 100644
--- a/shared-kernel-model/pom.xml
+++ b/shared-kernel-model/pom.xml
@@ -16,7 +16,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -37,8 +37,8 @@
org.projectlombok
lombok
- 1.16.18
- compile
+ 1.18.0
+ provided
org.spockframework
@@ -67,6 +67,7 @@
+ addTestSources
compileTests
@@ -74,7 +75,7 @@
maven-surefire-plugin
- 2.20.1
+ 2.22.0
false
@@ -86,7 +87,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.0
+ 0.8.1
diff --git a/shortages-prediction-adapters/build.gradle b/shortages-prediction-adapters/build.gradle
index 2e7950c..54f6fbe 100644
--- a/shortages-prediction-adapters/build.gradle
+++ b/shortages-prediction-adapters/build.gradle
@@ -4,18 +4,12 @@ dependencies {
compile(project(":shortages-prediction-model"))
compile(project(":adapter-commons"))
- compile("org.projectlombok:lombok:1.16.18")
-
- runtime("org.postgresql:postgresql:42.1.4")
-
testCompile("org.springframework.boot:spring-boot-starter-test")
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
testCompile("org.spockframework:spock-spring:1.1-groovy-2.4")
testCompile("org.springframework.cloud:spring-cloud-starter-contract-stub-runner")
testCompile("org.springframework.cloud:spring-cloud-starter-contract-verifier")
testCompile("org.springframework.restdocs:spring-restdocs-mockmvc")
testCompile("com.h2database:h2:1.4.194")
- testCompile(project(":adapter-commons").sourceSets.test.output)
}
if (gradle.startParameter.taskRequests.any { it.args.any { it.contains("apiCompatibility") } }) {
@@ -50,4 +44,4 @@ if (gradle.startParameter.taskRequests.any { it.args.any { it.contains("apiCompa
}
}
-}
\ No newline at end of file
+}
diff --git a/shortages-prediction-adapters/pom.xml b/shortages-prediction-adapters/pom.xml
index bc149fe..2552fe7 100644
--- a/shortages-prediction-adapters/pom.xml
+++ b/shortages-prediction-adapters/pom.xml
@@ -34,23 +34,11 @@
test
-
- org.projectlombok
- lombok
- 1.16.18
- provided
-
org.springframework.boot
spring-boot-starter-test
test
-
- org.postgresql
- postgresql
- 42.1.4
- runtime
-
org.spockframework
spock-core
@@ -63,12 +51,6 @@
1.1-groovy-2.4
test
-
- net.bytebuddy
- byte-buddy
- 1.7.9
- test
-
org.springframework.cloud
spring-cloud-starter-contract-stub-runner
@@ -113,7 +95,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -148,10 +130,11 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.7.0
-
- -parameters
-
+ 1.8
+ 1.8
+ -parameters
diff --git a/shortages-prediction-adapters/src/main/java/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java b/shortages-prediction-adapters/src/main/java/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
index b11292a..2d06de5 100644
--- a/shortages-prediction-adapters/src/main/java/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
+++ b/shortages-prediction-adapters/src/main/java/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
@@ -44,26 +44,24 @@ class ShortagePredictionProcessORMRepository implements ShortagePredictionProces
.flatMap(dao::findById)
.orElseGet(() -> dao.save(new ShortagesEntity(refNo.getRefNo())));
entity.setShortage(event.getShortage());
-
- events.emit(event);
}
private void delete(ShortageSolved event) {
TechnicalId.get(event.getRefNo())
.ifPresent(dao::deleteById);
-
- events.emit(event);
- }
+ }
private class EventsHandler implements ShortageEvents {
@Override
public void emit(NewShortage event) {
save(event);
+ events.emit(event);
}
@Override
public void emit(ShortageSolved event) {
delete(event);
+ events.emit(event);
}
}
}
diff --git a/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepositorySpec.groovy b/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepositorySpec.groovy
index accbfb6..25b22ee 100644
--- a/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepositorySpec.groovy
+++ b/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepositorySpec.groovy
@@ -1,27 +1,21 @@
package io.dddbyexamples.factory.shortages.prediction.monitoring
-import spock.lang.Ignore
-
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.annotation.Commit
import io.dddbyexamples.factory.product.management.RefNoId
import io.dddbyexamples.factory.shortages.prediction.Shortage
import io.dddbyexamples.factory.shortages.prediction.calculation.ShortageForecasts
import io.dddbyexamples.factory.shortages.prediction.monitoring.persistence.ShortagesDao
import io.dddbyexamples.factory.shortages.prediction.monitoring.persistence.ShortagesEntity
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
+import org.springframework.test.context.ActiveProfiles
import spock.lang.Specification
-import javax.transaction.Transactional
import java.time.LocalDateTime
import static io.dddbyexamples.factory.shortages.prediction.monitoring.NewShortage.After.DemandChanged
-@SpringBootTest
-@Transactional
-@Commit
-//TODO: Unignore
-@Ignore
+@DataJpaTest
+@ActiveProfiles("test")
class ShortagePredictionProcessORMRepositorySpec extends Specification {
def now = LocalDateTime.now()
@@ -42,54 +36,54 @@ class ShortagePredictionProcessORMRepositorySpec extends Specification {
def "provides process instance when no shortage persisted"() {
when:
- def process = fetchProcess()
+ def process = fetchProcess()
then:
- shortagesCurrentlyKnownBy(process) == noShortages()
+ shortagesCurrentlyKnownBy(process) == noShortages()
}
def "provides process instance with last known shortage"() {
given:
- persistedShortage(someShortages())
+ persistedShortage(someShortages())
when:
- def process = fetchProcess()
+ def process = fetchProcess()
then:
- shortagesCurrentlyKnownBy(process) == someShortages()
+ shortagesCurrentlyKnownBy(process) == someShortages()
}
def "persists first shortage"() {
when:
- def process = fetchProcess()
- processEmitsNewShortage(process, someShortages())
+ def process = fetchProcess()
+ processEmitsNewShortage(process, someShortages())
then:
- shortagesCurrentlyPersisted() == someShortages()
+ shortagesCurrentlyPersisted() == someShortages()
}
def "updates previous shortage"() {
given:
- persistedShortage(someOldShortages())
+ persistedShortage(someOldShortages())
when:
- def process = fetchProcess()
- processEmitsNewShortage(process, someShortages())
+ def process = fetchProcess()
+ processEmitsNewShortage(process, someShortages())
then:
- shortagesCurrentlyPersisted() == someShortages()
+ shortagesCurrentlyPersisted() == someShortages()
}
def "deletes solved shortage"() {
given:
- persistedShortage(someShortages())
+ persistedShortage(someShortages())
when:
- def process = fetchProcess()
- processEmitsShortageSolved(process)
+ def process = fetchProcess()
+ processEmitsShortageSolved(process)
then:
- noShortagesPersisted()
+ noShortagesPersisted()
}
def persistedShortage(Shortage shortages) {
diff --git a/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoTest.groovy b/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoSpec.groovy
similarity index 57%
rename from shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoTest.groovy
rename to shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoSpec.groovy
index 39b9489..2abc578 100644
--- a/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoTest.groovy
+++ b/shortages-prediction-adapters/src/test/groovy/io/dddbyexamples/factory/shortages/prediction/monitoring/persistence/ShortagesDaoSpec.groovy
@@ -1,24 +1,16 @@
package io.dddbyexamples.factory.shortages.prediction.monitoring.persistence
-import groovy.transform.CompileStatic
-import org.mockito.Mockito
-import spock.lang.Specification
-
-import org.springframework.beans.BeansException
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.beans.factory.config.BeanPostProcessor
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.wiremock.restdocs.SpringCloudContractRestDocs
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.ComponentScan
-import org.springframework.context.annotation.Configuration
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
+import org.springframework.test.context.ActiveProfiles
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.result.MockMvcResultMatchers
+import spock.lang.Specification
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.MOCK
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
@@ -31,18 +23,21 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
// would love to get rid of this
@AutoConfigureTestDatabase
@AutoConfigureRestDocs
-class ShortagesDaoTest extends Specification {
+@ActiveProfiles("test")
+class ShortagesDaoSpec extends Specification {
- @Autowired ShortagesDao shortagesDao
- @Autowired MockMvc mockMvc
+ @Autowired
+ ShortagesDao shortagesDao
+ @Autowired
+ MockMvc mockMvc
- def "should find ref by no"() {
- given:
- Config.defaultStubbing(shortagesDao)
- expect:
- mockMvc.perform(get("/shortages?refNo=1"))
- .andExpect(MockMvcResultMatchers.status().isOk())
- .andDo(MockMvcRestDocumentation.document("find_ref_by_no",
- SpringCloudContractRestDocs.dslContract()))
- }
+ def "should find ref by no"() {
+ given:
+ Config.defaultStubbing(shortagesDao)
+ expect:
+ mockMvc.perform(get("/shortages?refNo=1"))
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcRestDocumentation.document("find_ref_by_no",
+ SpringCloudContractRestDocs.dslContract()))
+ }
}
diff --git a/shortages-prediction-model/build.gradle b/shortages-prediction-model/build.gradle
index 62c080d..aad9908 100644
--- a/shortages-prediction-model/build.gradle
+++ b/shortages-prediction-model/build.gradle
@@ -1,8 +1,6 @@
apply plugin: 'groovy'
+apply plugin: "jacoco"
dependencies {
compile(project(":shared-kernel-model"))
- compile("org.projectlombok:lombok:1.16.18")
-
- testCompile("org.spockframework:spock-core:1.1-groovy-2.4")
-}
\ No newline at end of file
+}
diff --git a/shortages-prediction-model/pom.xml b/shortages-prediction-model/pom.xml
index 5c38db9..0ed97e3 100644
--- a/shortages-prediction-model/pom.xml
+++ b/shortages-prediction-model/pom.xml
@@ -16,7 +16,7 @@
http://localhost:8081/artifactory/libs-release-local
http://localhost:8081/artifactory/libs-snapshot-local
http://localhost:8081/artifactory/libs-release-local
- 2.21.0
+ 2.22.0
@@ -42,7 +42,7 @@
org.projectlombok
lombok
- 1.16.18
+ 1.18.0
compile
@@ -72,6 +72,7 @@
+ addTestSources
compileTests
@@ -79,7 +80,7 @@
maven-surefire-plugin
- 2.20.1
+ 2.22.0
false
@@ -91,7 +92,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.0
+ 0.8.1