diff --git a/calm-hub/.gitignore b/calm-hub/.gitignore index ee1b34071..049281bf5 100644 --- a/calm-hub/.gitignore +++ b/calm-hub/.gitignore @@ -42,7 +42,7 @@ # .idea/modules.xml # .idea/*.iml # .idea/modules -# *.iml +*.iml # *.ipr # CMake @@ -316,4 +316,4 @@ thumb sketch -# End of https://www.toptal.com/developers/gitignore/api/intellij,react,node,java,maven \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/intellij,react,node,java,maven diff --git a/calm-hub/mongo/init-mongo.js b/calm-hub/mongo/init-mongo.js index 09044f782..849e1d8f5 100644 --- a/calm-hub/mongo/init-mongo.js +++ b/calm-hub/mongo/init-mongo.js @@ -21,6 +21,17 @@ if (db.counters.countDocuments({ _id: "architectureStoreCounter" }) === 1) { print("architectureStoreCounter already exists, no initialization needed"); } +if (db.counters.countDocuments({ _id: "adrStoreCounter" }) === 1) { + db.counters.insertOne({ + _id: "adrStoreCounter", + sequence_value: 1 + }); + print("Initialized adrStoreCounter with sequence_value 1"); +} else { + print("adrStoreCounter already exists, no initialization needed"); +} + + if (db.counters.countDocuments({ _id: "flowStoreCounter" }) === 1) { db.counters.insertOne({ _id: "flowStoreCounter", diff --git a/calm-hub/pom.xml b/calm-hub/pom.xml index a95f1db59..9fb82398c 100644 --- a/calm-hub/pom.xml +++ b/calm-hub/pom.xml @@ -44,6 +44,16 @@ io.quarkus quarkus-mongodb-client + + io.soabase.record-builder + record-builder-core + 44 + provided + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + @@ -165,6 +175,11 @@ org.jacoco jacoco-maven-plugin 0.8.12 + + + **/*Builder.* + + default-prepare-agent @@ -200,6 +215,21 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + io.soabase.record-builder + record-builder-processor + 44 + + + + diff --git a/calm-hub/src/integration-test/java/integration/MongoAdrIntegration.java b/calm-hub/src/integration-test/java/integration/MongoAdrIntegration.java new file mode 100644 index 000000000..1c3f15388 --- /dev/null +++ b/calm-hub/src/integration-test/java/integration/MongoAdrIntegration.java @@ -0,0 +1,210 @@ +package integration; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; +import io.quarkus.test.junit.QuarkusTest; +import io.quarkus.test.junit.TestProfile; +import org.bson.Document; +import org.eclipse.microprofile.config.ConfigProvider; +import org.finos.calm.domain.adr.Adr; +import org.finos.calm.domain.adr.AdrMeta; +import org.finos.calm.domain.adr.AdrMetaBuilder; +import org.finos.calm.domain.adr.Decision; +import org.finos.calm.domain.adr.DecisionBuilder; +import org.finos.calm.domain.adr.LinkBuilder; +import org.finos.calm.domain.adr.NewAdrRequest; +import org.finos.calm.domain.adr.NewAdrRequestBuilder; +import org.finos.calm.domain.adr.Option; +import org.finos.calm.domain.adr.OptionBuilder; +import org.finos.calm.domain.adr.Status; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.databind.ObjectMapper; +import static integration.MongoSetup.counterSetup; +import static integration.MongoSetup.namespaceSetup; +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.*; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@QuarkusTest +@TestProfile(IntegrationTestProfile.class) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class MongoAdrIntegration { + + private ObjectMapper objectMapper; + + private static final Logger logger = LoggerFactory.getLogger(MongoAdrIntegration.class); + + private final String TITLE = "My ADR"; + private final String PROBLEM_STATEMENT = "My problem is..."; + private final List DECISION_DRIVERS = List.of("a", "b", "c"); + private final Option OPTION_A = OptionBuilder.builder().name("Option 1").description("optionDescription") + .positiveConsequences(List.of("a")).negativeConsequences(List.of("b")).build(); + private final Option OPTION_B = OptionBuilder.builder().name("Option 2").description("optionDescription") + .positiveConsequences(List.of("c")).negativeConsequences(List.of("d")).build(); + private final List