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 ma...@apache.org on 2020/02/27 16:20:30 UTC

[james-project] 09/14: JAMES-3009 convert event store api tests to scala

This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit a41c5d0b7d6ff2c45c7c22696f2e7ac7bbb0d2d9
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Thu Dec 12 16:07:21 2019 +0100

    JAMES-3009 convert event store api tests to scala
---
 .../eventsourcing/eventstore/EventStore.scala      |  4 +-
 .../eventstore/EventStoreFailedException.scala     |  6 +-
 .../eventsourcing/eventstore/EventStoreTest.java   | 85 ----------------------
 .../eventsourcing/eventstore/HistoryTest.java      | 84 ---------------------
 .../eventstore/EventStoreContract.scala            | 82 +++++++++++++++++++++
 .../eventsourcing/eventstore/HistoryTest.scala     | 55 ++++++++++++++
 6 files changed, 142 insertions(+), 174 deletions(-)

diff --git a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStore.scala b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStore.scala
index cf1a903..b90c314 100644
--- a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStore.scala
+++ b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStore.scala
@@ -35,7 +35,7 @@ trait EventStore {
    * This method should check that no input event has an id already stored and throw otherwise
    * It should also check that all events belong to the same aggregate
    */
-  def appendAll(events: List[Event]) : Unit
+  def appendAll(events: List[Event]): Unit
 
-  def getEventsOfAggregate(aggregateId: AggregateId) : History
+  def getEventsOfAggregate(aggregateId: AggregateId): History
 }
\ No newline at end of file
diff --git a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStoreFailedException.scala b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStoreFailedException.scala
index 2549ea1..7583525 100644
--- a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStoreFailedException.scala
+++ b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/EventStoreFailedException.scala
@@ -1,4 +1,4 @@
-/** **************************************************************
+ /***************************************************************
  * 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        *
@@ -7,7 +7,7 @@
  * "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                   *
+ *   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  *
@@ -15,7 +15,7 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- * ***************************************************************/
+ ****************************************************************/
 package org.apache.james.eventsourcing.eventstore
 
 case class EventStoreFailedException(message: String) extends RuntimeException(message)
\ No newline at end of file
diff --git a/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/EventStoreTest.java b/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/EventStoreTest.java
deleted file mode 100644
index b4b37ba..0000000
--- a/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/EventStoreTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************
- * 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.eventsourcing.eventstore;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import org.apache.james.eventsourcing.EventId;
-import org.apache.james.eventsourcing.TestAggregateId;
-import org.apache.james.eventsourcing.TestEvent;
-import org.junit.jupiter.api.Test;
-
-public interface EventStoreTest {
-
-    TestAggregateId AGGREGATE_1 = TestAggregateId.apply(1);
-    TestAggregateId AGGREGATE_2 = TestAggregateId.apply(2);
-
-    @Test
-    default void getEventsOfAggregateShouldThrowOnNullAggregateId(EventStore testee) {
-        assertThatThrownBy(() -> testee.getEventsOfAggregate(null))
-            .isInstanceOf(NullPointerException.class);
-    }
-
-    @Test
-    default void appendShouldThrowWhenEventFromSeveralAggregates(EventStore testee) {
-        TestEvent event1 = new TestEvent(EventId.first(), AGGREGATE_1, "first");
-        TestEvent event2 = new TestEvent(event1.eventId().next(), AGGREGATE_2, "second");
-        assertThatThrownBy(() -> testee.appendAll(event1, event2)).isInstanceOf(IllegalArgumentException.class);
-    }
-
-    @Test
-    default void appendShouldDoNothingOnEmptyEventList(EventStore testee) {
-        assertThatCode(testee::appendAll).doesNotThrowAnyException();
-    }
-
-    @Test
-    default void appendShouldThrowWhenTryingToRewriteHistory(EventStore testee) {
-        TestEvent event1 = new TestEvent(EventId.first(), AGGREGATE_1, "first");
-        testee.append(event1);
-        TestEvent event2 = new TestEvent(EventId.first(), AGGREGATE_1, "second");
-        assertThatThrownBy(() -> testee.append(event2)).isInstanceOf(EventStoreFailedException.class);
-    }
-
-    @Test
-    default void getEventsOfAggregateShouldReturnEmptyHistoryWhenUnknown(EventStore testee) {
-        assertThat(testee.getEventsOfAggregate(AGGREGATE_1)).isEqualTo(History.empty());
-    }
-
-    @Test
-    default void getEventsOfAggregateShouldReturnAppendedEvent(EventStore testee) {
-        TestEvent event = new TestEvent(EventId.first(), AGGREGATE_1, "first");
-        testee.append(event);
-        assertThat(testee.getEventsOfAggregate(AGGREGATE_1))
-            .isEqualTo(History.of(event));
-    }
-
-    @Test
-    default void getEventsOfAggregateShouldReturnAppendedEvents(EventStore testee) {
-        TestEvent event1 = new TestEvent(EventId.first(), AGGREGATE_1, "first");
-        TestEvent event2 = new TestEvent(event1.eventId().next(), AGGREGATE_1, "second");
-        testee.append(event1);
-        testee.append(event2);
-        assertThat(testee.getEventsOfAggregate(AGGREGATE_1))
-            .isEqualTo(History.of(event1, event2));
-    }
-
-}
\ No newline at end of file
diff --git a/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/HistoryTest.java b/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/HistoryTest.java
deleted file mode 100644
index adec969..0000000
--- a/event-sourcing/event-store-api/src/test/java/org/apache/james/eventsourcing/eventstore/HistoryTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************
- * 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.eventsourcing.eventstore;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import org.apache.james.eventsourcing.EventId;
-import org.apache.james.eventsourcing.TestAggregateId;
-import org.apache.james.eventsourcing.TestEvent;
-import org.junit.jupiter.api.Test;
-
-import scala.compat.java8.OptionConverters;
-
-class HistoryTest {
-
-    @Test
-    void emptyShouldGenerateAnEmptyHistory() {
-        assertThat(History.empty())
-            .isEqualTo(History.of());
-    }
-
-    @Test
-    void getVersionShouldReturnEmptyWhenEmpty() {
-        assertThat(OptionConverters.toJava(History.empty()
-            .getVersion()))
-            .isEmpty();
-    }
-
-    @Test
-    void getVersionShouldReturnSingleEventIdWhenSingleEvent() {
-        assertThat(OptionConverters.toJava(History
-            .of(new TestEvent(EventId.first(),
-                TestAggregateId.apply(42),
-                "any"))
-            .getVersion()))
-            .contains(EventId.first());
-    }
-
-    @Test
-    void getVersionShouldReturnHighestEventId() {
-        TestEvent event1 = new TestEvent(EventId.first(),
-            TestAggregateId.apply(42),
-            "any");
-        TestEvent event2 = new TestEvent(event1.eventId().next(),
-            TestAggregateId.apply(42),
-            "any");
-
-        assertThat(OptionConverters.toJava(History.of(event1, event2)
-            .getVersion()))
-            .contains(event2.eventId());
-    }
-
-    @Test
-    void duplicateHistoryShouldThrow() {
-        TestEvent event1 = new TestEvent(EventId.first(),
-            TestAggregateId.apply(42),
-            "any");
-        TestEvent event2 = new TestEvent(EventId.first(),
-            TestAggregateId.apply(42),
-            "any");
-
-        assertThatThrownBy(() -> History.of(event1, event2))
-            .isInstanceOf(EventStoreFailedException.class);
-    }
-
-}
diff --git a/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/EventStoreContract.scala b/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/EventStoreContract.scala
new file mode 100644
index 0000000..f519a9c
--- /dev/null
+++ b/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/EventStoreContract.scala
@@ -0,0 +1,82 @@
+ /***************************************************************
+ * 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.eventsourcing.eventstore
+
+import org.apache.james.eventsourcing.{EventId, TestAggregateId, TestEvent}
+import org.assertj.core.api.Assertions.{assertThat, assertThatCode, assertThatThrownBy}
+import org.junit.jupiter.api.Test
+
+object EventStoreContract {
+  val AGGREGATE_1 = TestAggregateId(1)
+  val AGGREGATE_2 = TestAggregateId(2)
+}
+
+trait EventStoreContract {
+
+  @Test
+  def getEventsOfAggregateShouldThrowOnNullAggregateId(testee: EventStore) : Unit =
+    assertThatThrownBy(() => testee.getEventsOfAggregate(null))
+      .isInstanceOf(classOf[NullPointerException])
+
+  @Test
+  def appendShouldThrowWhenEventFromSeveralAggregates(testee: EventStore) : Unit = {
+    val event1 = TestEvent(EventId.first, EventStoreContract.AGGREGATE_1, "first")
+    val event2 = TestEvent(event1.eventId.next, EventStoreContract.AGGREGATE_2, "second")
+    assertThatThrownBy(() => testee.appendAll(event1, event2))
+      .isInstanceOf(classOf[IllegalArgumentException])
+  }
+
+  @Test
+  def appendShouldDoNothingOnEmptyEventList(testee: EventStore) : Unit =
+    assertThatCode(() => testee.appendAll())
+      .doesNotThrowAnyException()
+
+  @Test
+  def appendShouldThrowWhenTryingToRewriteHistory(testee: EventStore) : Unit = {
+    val event1 = TestEvent(EventId.first, EventStoreContract.AGGREGATE_1, "first")
+    testee.append(event1)
+    val event2 = TestEvent(EventId.first, EventStoreContract.AGGREGATE_1, "second")
+    assertThatThrownBy(
+      () => testee.append(event2))
+      .isInstanceOf(classOf[EventStoreFailedException])
+  }
+
+  @Test
+  def getEventsOfAggregateShouldReturnEmptyHistoryWhenUnknown(testee: EventStore) : Unit =
+    assertThat(testee.getEventsOfAggregate(EventStoreContract.AGGREGATE_1))
+      .isEqualTo(History.empty)
+
+  @Test
+  def getEventsOfAggregateShouldReturnAppendedEvent(testee: EventStore) : Unit = {
+    val event = TestEvent(EventId.first, EventStoreContract.AGGREGATE_1, "first")
+    testee.append(event)
+    assertThat(testee.getEventsOfAggregate(EventStoreContract.AGGREGATE_1))
+      .isEqualTo(History.of(event))
+  }
+
+  @Test
+  def getEventsOfAggregateShouldReturnAppendedEvents(testee: EventStore) : Unit = {
+    val event1 = TestEvent(EventId.first, EventStoreContract.AGGREGATE_1, "first")
+    val event2 = TestEvent(event1.eventId.next, EventStoreContract.AGGREGATE_1, "second")
+    testee.append(event1)
+    testee.append(event2)
+    assertThat(testee.getEventsOfAggregate(EventStoreContract.AGGREGATE_1))
+      .isEqualTo(History.of(event1, event2))
+  }
+}
\ No newline at end of file
diff --git a/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/HistoryTest.scala b/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/HistoryTest.scala
new file mode 100644
index 0000000..edd5d5e
--- /dev/null
+++ b/event-sourcing/event-store-api/src/test/scala/org/apache/james/eventsourcing/eventstore/HistoryTest.scala
@@ -0,0 +1,55 @@
+ /***************************************************************
+ * 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.eventsourcing.eventstore
+
+import org.apache.james.eventsourcing.{EventId, TestAggregateId, TestEvent}
+import org.assertj.core.api.Assertions.{assertThat, assertThatThrownBy}
+import org.junit.jupiter.api.Test
+
+class HistoryTest {
+
+  @Test
+  def emptyShouldGenerateAnEmptyHistory() : Unit = assertThat(History.empty)
+    .isEqualTo(History.of())
+
+  @Test
+  def getVersionShouldReturnEmptyWhenEmpty() : Unit = assertThat(History.empty.getVersion)
+    .isEqualTo(None)
+
+  @Test
+  def getVersionShouldReturnSingleEventIdWhenSingleEvent() : Unit =
+    assertThat(History.of(TestEvent(EventId.first, TestAggregateId(42), "any")).getVersion)
+      .isEqualTo(Some(EventId.first))
+
+  @Test
+  def getVersionShouldReturnHighestEventId() : Unit = {
+    val event1 = TestEvent(EventId.first, TestAggregateId(42), "any")
+    val event2 = TestEvent(event1.eventId.next, TestAggregateId(42), "any")
+    assertThat(History.of(event1, event2).getVersion)
+      .isEqualTo(Some(event2.eventId))
+  }
+
+  @Test
+  def duplicateHistoryShouldThrow() : Unit = {
+    val event1 = TestEvent(EventId.first, TestAggregateId(42), "any")
+    val event2 = TestEvent(EventId.first, TestAggregateId(42), "any")
+    assertThatThrownBy(() => History.of(event1, event2))
+      .isInstanceOf(classOf[EventStoreFailedException])
+  }
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org