You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/08/01 07:22:28 UTC
[james-project] 06/09: JAMES-2813 Extract
TaskExecutionDetailsProjectionContract
This is an automated email from the ASF dual-hosted git repository.
rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit eb17179a358308f312cd9240361e246b14e6af67
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Jul 30 11:44:47 2019 +0200
JAMES-2813 Extract TaskExecutionDetailsProjectionContract
---
...assandraTaskExecutionDetailsProjectionTest.java | 79 +++-------------------
.../MemoryTaskExecutionDetailsProjectionTest.java | 29 ++++++++
.../TaskExecutionDetailsProjectionContract.java} | 70 +++++++++----------
3 files changed, 71 insertions(+), 107 deletions(-)
diff --git a/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java b/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
index 0c1743a..5e7229d 100644
--- a/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
+++ b/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
@@ -19,96 +19,35 @@
package org.apache.james.task.eventsourcing.cassandra;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Stream;
+import java.util.function.Supplier;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.task.TaskExecutionDetails;
-import org.apache.james.task.TaskId;
-import org.apache.james.task.TaskManager;
+import org.apache.james.task.eventsourcing.TaskExecutionDetailsProjection;
+import org.apache.james.task.eventsourcing.TaskExecutionDetailsProjectionContract;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
-import scala.collection.JavaConverters;
-import scala.compat.java8.OptionConverters;
-
-class CassandraTaskExecutionDetailsProjectionTest {
-
- private static final TaskId TASK_ID = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd");
- private static final TaskId TASK_ID_2 = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafe");
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS = new TaskExecutionDetails(TASK_ID, "type", Optional.empty(),
- TaskManager.Status.COMPLETED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS_2 = new TaskExecutionDetails(TASK_ID_2, "type", Optional.empty(),
- TaskManager.Status.COMPLETED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS_UPDATED = new TaskExecutionDetails(TASK_ID, "type", Optional.empty(),
- TaskManager.Status.FAILED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
+class CassandraTaskExecutionDetailsProjectionTest implements TaskExecutionDetailsProjectionContract {
@RegisterExtension
static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
CassandraModule.aggregateModules(CassandraSchemaVersionModule.MODULE, CassandraZonedDateTimeModule.MODULE, CassandraTaskExecutionDetailsProjectionModule.MODULE()));
- private CassandraTaskExecutionDetailsProjection testee;
+ private Supplier<CassandraTaskExecutionDetailsProjection> testeeSupplier;
@BeforeEach
void setUp(CassandraCluster cassandra) {
CassandraTaskExecutionDetailsProjectionDAO cassandraTaskExecutionDetailsProjectionDAO = new CassandraTaskExecutionDetailsProjectionDAO(cassandra.getConf(), cassandra.getTypesProvider());
- testee = new CassandraTaskExecutionDetailsProjection(cassandraTaskExecutionDetailsProjectionDAO);
- }
-
- @Test
- void loadShouldBeAbleToRetrieveASavedRecord() {
- testee.update(TASK_EXECUTION_DETAILS);
-
- Optional<TaskExecutionDetails> taskExecutionDetails = OptionConverters.toJava(testee.load(TASK_ID));
- assertThat(taskExecutionDetails).contains(TASK_EXECUTION_DETAILS);
- }
-
- @Test
- void updateShouldUpdateRecords() {
- testee.update(TASK_EXECUTION_DETAILS);
-
- testee.update(TASK_EXECUTION_DETAILS_UPDATED);
-
- Optional<TaskExecutionDetails> taskExecutionDetails = OptionConverters.toJava(testee.load(TASK_ID));
- assertThat(taskExecutionDetails).contains(TASK_EXECUTION_DETAILS_UPDATED);
- }
-
- @Test
- void loadShouldReturnEmptyWhenNone() {
- Optional<TaskExecutionDetails> taskExecutionDetails = OptionConverters.toJava(testee.load(TASK_ID));
- assertThat(taskExecutionDetails).isEmpty();
- }
-
- @Test
- void listShouldReturnEmptyWhenNone() {
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
- assertThat(taskExecutionDetails).isEmpty();
+ testeeSupplier = () -> new CassandraTaskExecutionDetailsProjection(cassandraTaskExecutionDetailsProjectionDAO);
}
- @Test
- void listShouldReturnAllRecords() {
- testee.update(TASK_EXECUTION_DETAILS);
- testee.update(TASK_EXECUTION_DETAILS_2);
-
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
- assertThat(taskExecutionDetails).containsOnly(TASK_EXECUTION_DETAILS, TASK_EXECUTION_DETAILS_2);
- }
-
- @Test
- void listDetailsShouldReturnLastUpdatedRecords() {
- testee.update(TASK_EXECUTION_DETAILS);
- testee.update(TASK_EXECUTION_DETAILS_UPDATED);
-
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
- assertThat(taskExecutionDetails).containsOnly(TASK_EXECUTION_DETAILS_UPDATED);
+ @Override
+ public TaskExecutionDetailsProjection testee() {
+ return testeeSupplier.get();
}
}
diff --git a/server/task/src/test/java/org/apache/james/task/eventsourcing/MemoryTaskExecutionDetailsProjectionTest.java b/server/task/src/test/java/org/apache/james/task/eventsourcing/MemoryTaskExecutionDetailsProjectionTest.java
new file mode 100644
index 0000000..5908b21
--- /dev/null
+++ b/server/task/src/test/java/org/apache/james/task/eventsourcing/MemoryTaskExecutionDetailsProjectionTest.java
@@ -0,0 +1,29 @@
+/**
+ * *************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ***************************************************************/
+
+package org.apache.james.task.eventsourcing;
+
+class MemoryTaskExecutionDetailsProjectionTest implements TaskExecutionDetailsProjectionContract {
+
+ @Override
+ public TaskExecutionDetailsProjection testee() {
+ return new MemoryTaskExecutionDetailsProjection();
+ }
+}
\ No newline at end of file
diff --git a/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java b/server/task/src/test/java/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjectionContract.java
similarity index 52%
copy from server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
copy to server/task/src/test/java/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjectionContract.java
index 0c1743a..54fd347 100644
--- a/server/task-cassandra/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
+++ b/server/task/src/test/java/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjectionContract.java
@@ -17,55 +17,46 @@
* under the License. *
* ***************************************************************/
-package org.apache.james.task.eventsourcing.cassandra;
+package org.apache.james.task.eventsourcing;
import static org.assertj.core.api.Assertions.assertThat;
+import java.time.ZonedDateTime;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Stream;
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
-import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
import org.apache.james.task.TaskExecutionDetails;
import org.apache.james.task.TaskId;
import org.apache.james.task.TaskManager;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
import scala.collection.JavaConverters;
import scala.compat.java8.OptionConverters;
-class CassandraTaskExecutionDetailsProjectionTest {
+public interface TaskExecutionDetailsProjectionContract {
- private static final TaskId TASK_ID = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd");
- private static final TaskId TASK_ID_2 = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafe");
+ TaskId TASK_ID = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd");
+ TaskId TASK_ID_2 = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafe");
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS = new TaskExecutionDetails(TASK_ID, "type", Optional.empty(),
- TaskManager.Status.COMPLETED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS_2 = new TaskExecutionDetails(TASK_ID_2, "type", Optional.empty(),
- TaskManager.Status.COMPLETED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
- private static TaskExecutionDetails TASK_EXECUTION_DETAILS_UPDATED = new TaskExecutionDetails(TASK_ID, "type", Optional.empty(),
- TaskManager.Status.FAILED, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
+ Optional<TaskExecutionDetails.AdditionalInformation> ADDITIONAL_INFORMATION = Optional.empty();
+ Optional<ZonedDateTime> SUBMIT_DATE = Optional.empty();
+ Optional<ZonedDateTime> STARTED_DATE = Optional.empty();
+ Optional<ZonedDateTime> COMPLETED_DATE = Optional.empty();
+ Optional<ZonedDateTime> CANCELLED_DATE = Optional.empty();
+ Optional<ZonedDateTime> FAILED_DATE = Optional.empty();
- @RegisterExtension
- static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
- CassandraModule.aggregateModules(CassandraSchemaVersionModule.MODULE, CassandraZonedDateTimeModule.MODULE, CassandraTaskExecutionDetailsProjectionModule.MODULE()));
+ TaskExecutionDetails TASK_EXECUTION_DETAILS = new TaskExecutionDetails(TASK_ID, "type", ADDITIONAL_INFORMATION,
+ TaskManager.Status.COMPLETED, SUBMIT_DATE, STARTED_DATE, COMPLETED_DATE, CANCELLED_DATE, FAILED_DATE);
+ TaskExecutionDetails TASK_EXECUTION_DETAILS_2 = new TaskExecutionDetails(TASK_ID_2, "type", ADDITIONAL_INFORMATION,
+ TaskManager.Status.COMPLETED, STARTED_DATE, STARTED_DATE, COMPLETED_DATE, CANCELLED_DATE, FAILED_DATE);
+ TaskExecutionDetails TASK_EXECUTION_DETAILS_UPDATED = new TaskExecutionDetails(TASK_ID, "type", ADDITIONAL_INFORMATION,
+ TaskManager.Status.FAILED, STARTED_DATE, STARTED_DATE, COMPLETED_DATE, CANCELLED_DATE, FAILED_DATE);
- private CassandraTaskExecutionDetailsProjection testee;
-
- @BeforeEach
- void setUp(CassandraCluster cassandra) {
- CassandraTaskExecutionDetailsProjectionDAO cassandraTaskExecutionDetailsProjectionDAO = new CassandraTaskExecutionDetailsProjectionDAO(cassandra.getConf(), cassandra.getTypesProvider());
- testee = new CassandraTaskExecutionDetailsProjection(cassandraTaskExecutionDetailsProjectionDAO);
- }
+ TaskExecutionDetailsProjection testee();
@Test
- void loadShouldBeAbleToRetrieveASavedRecord() {
+ default void loadShouldBeAbleToRetrieveASavedRecord() {
+ TaskExecutionDetailsProjection testee = testee();
testee.update(TASK_EXECUTION_DETAILS);
Optional<TaskExecutionDetails> taskExecutionDetails = OptionConverters.toJava(testee.load(TASK_ID));
@@ -73,7 +64,8 @@ class CassandraTaskExecutionDetailsProjectionTest {
}
@Test
- void updateShouldUpdateRecords() {
+ default void updateShouldUpdateRecords() {
+ TaskExecutionDetailsProjection testee = testee();
testee.update(TASK_EXECUTION_DETAILS);
testee.update(TASK_EXECUTION_DETAILS_UPDATED);
@@ -83,32 +75,36 @@ class CassandraTaskExecutionDetailsProjectionTest {
}
@Test
- void loadShouldReturnEmptyWhenNone() {
+ default void loadShouldReturnEmptyWhenNone() {
+ TaskExecutionDetailsProjection testee = testee();
Optional<TaskExecutionDetails> taskExecutionDetails = OptionConverters.toJava(testee.load(TASK_ID));
assertThat(taskExecutionDetails).isEmpty();
}
@Test
- void listShouldReturnEmptyWhenNone() {
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
+ default void listShouldReturnEmptyWhenNone() {
+ TaskExecutionDetailsProjection testee = testee();
+ List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.seqAsJavaList(testee.list());
assertThat(taskExecutionDetails).isEmpty();
}
@Test
- void listShouldReturnAllRecords() {
+ default void listShouldReturnAllRecords() {
+ TaskExecutionDetailsProjection testee = testee();
testee.update(TASK_EXECUTION_DETAILS);
testee.update(TASK_EXECUTION_DETAILS_2);
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
+ List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.seqAsJavaList(testee.list());
assertThat(taskExecutionDetails).containsOnly(TASK_EXECUTION_DETAILS, TASK_EXECUTION_DETAILS_2);
}
@Test
- void listDetailsShouldReturnLastUpdatedRecords() {
+ default void listDetailsShouldReturnLastUpdatedRecords() {
+ TaskExecutionDetailsProjection testee = testee();
testee.update(TASK_EXECUTION_DETAILS);
testee.update(TASK_EXECUTION_DETAILS_UPDATED);
- List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.asJava(testee.list());
+ List<TaskExecutionDetails> taskExecutionDetails = JavaConverters.seqAsJavaList(testee.list());
assertThat(taskExecutionDetails).containsOnly(TASK_EXECUTION_DETAILS_UPDATED);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org