Search in sources :

Example 11 with TestAggregate

use of uk.gov.justice.domain.aggregate.TestAggregate in project microservice_framework by CJSCommonPlatform.

the class DefaultAggregateServiceTest method shouldCreateAggregateFromStreamOfThreeWithAFilteredOutSystemEvent.

@Test
public void shouldCreateAggregateFromStreamOfThreeWithAFilteredOutSystemEvent() {
    JsonObject eventPayloadA = mock(JsonObject.class);
    JsonObject eventPayloadB = mock(JsonObject.class);
    EventA eventA = mock(EventA.class);
    EventB eventB = mock(EventB.class);
    when(jsonObjectToObjectConverter.convert(eventPayloadA, EventA.class)).thenReturn(eventA);
    when(jsonObjectToObjectConverter.convert(eventPayloadB, EventB.class)).thenReturn(eventB);
    when(eventStream.read()).thenReturn(Stream.of(envelopeFrom(metadataWithRandomUUID("eventA"), eventPayloadA), envelopeFrom(metadataWithRandomUUID("eventB"), eventPayloadB), envelopeFrom(metadataWithRandomUUID("system.events.eventC"), eventPayloadB)));
    when(eventStream.getId()).thenReturn(STREAM_ID);
    aggregateService.register(new EventFoundEvent(EventA.class, "eventA"));
    aggregateService.register(new EventFoundEvent(EventB.class, "eventB"));
    TestAggregate aggregate = aggregateService.get(eventStream, TestAggregate.class);
    assertThat(aggregate, notNullValue());
    assertThat(aggregate.recordedEvents(), hasSize(2));
    assertThat(aggregate.recordedEvents().get(0), equalTo(eventA));
    assertThat(aggregate.recordedEvents().get(1), equalTo(eventB));
    verify(logger).info("Registering event {}, {} with DefaultAggregateService", "eventA", EventA.class);
    verify(logger).info("Registering event {}, {} with DefaultAggregateService", "eventB", EventB.class);
    verify(logger).trace("Recreating aggregate for instance {} of aggregate type {}", STREAM_ID, TestAggregate.class);
}
Also used : EventB(uk.gov.justice.services.core.aggregate.event.EventB) EventFoundEvent(uk.gov.justice.services.core.extension.EventFoundEvent) TestAggregate(uk.gov.justice.domain.aggregate.TestAggregate) JsonObject(javax.json.JsonObject) EventA(uk.gov.justice.services.core.aggregate.event.EventA) Test(org.junit.Test)

Example 12 with TestAggregate

use of uk.gov.justice.domain.aggregate.TestAggregate in project microservice_framework by CJSCommonPlatform.

the class DefaultAggregateServiceTest method shouldCreateAggregateFromEmptyStream.

@Test
public void shouldCreateAggregateFromEmptyStream() {
    when(eventStream.read()).thenReturn(Stream.empty());
    when(eventStream.getId()).thenReturn(STREAM_ID);
    TestAggregate aggregate = aggregateService.get(eventStream, TestAggregate.class);
    assertThat(aggregate, notNullValue());
    assertThat(aggregate.recordedEvents(), empty());
    verify(logger).trace("Recreating aggregate for instance {} of aggregate type {}", STREAM_ID, TestAggregate.class);
}
Also used : TestAggregate(uk.gov.justice.domain.aggregate.TestAggregate) Test(org.junit.Test)

Example 13 with TestAggregate

use of uk.gov.justice.domain.aggregate.TestAggregate in project microservice_framework by CJSCommonPlatform.

the class DefaultAggregateServiceTest method shouldCreateAggregateFromSingletonStream.

@Test
public void shouldCreateAggregateFromSingletonStream() {
    JsonObject eventPayloadA = mock(JsonObject.class);
    EventA eventA = mock(EventA.class);
    when(jsonObjectToObjectConverter.convert(eventPayloadA, EventA.class)).thenReturn(eventA);
    when(eventStream.read()).thenReturn(Stream.of(envelopeFrom(metadataWithRandomUUID("eventA"), eventPayloadA)));
    when(eventStream.getId()).thenReturn(STREAM_ID);
    registerEvent(EventA.class, "eventA");
    TestAggregate aggregate = aggregateService.get(eventStream, TestAggregate.class);
    assertThat(aggregate, notNullValue());
    assertThat(aggregate.recordedEvents(), hasSize(1));
    assertThat(aggregate.recordedEvents().get(0), equalTo(eventA));
    verify(logger).info("Registering event {}, {} with DefaultAggregateService", "eventA", EventA.class);
    verify(logger).trace("Recreating aggregate for instance {} of aggregate type {}", STREAM_ID, TestAggregate.class);
}
Also used : TestAggregate(uk.gov.justice.domain.aggregate.TestAggregate) JsonObject(javax.json.JsonObject) EventA(uk.gov.justice.services.core.aggregate.event.EventA) Test(org.junit.Test)

Example 14 with TestAggregate

use of uk.gov.justice.domain.aggregate.TestAggregate in project microservice_framework by CJSCommonPlatform.

the class SnapshotAwareAggregateServiceTest method shouldCreateAggregateFromStreamWithTwoEvents.

@Test
public void shouldCreateAggregateFromStreamWithTwoEvents() throws AggregateChangeDetectedException {
    final EventA eventA = new EventA();
    final EventB eventB = mock(EventB.class);
    final JsonObject eventPayloadA = mock(JsonObject.class);
    final JsonObject eventPayloadB = mock(JsonObject.class);
    final Optional<VersionedAggregate<TestAggregate>> versionedAggregate = Optional.empty();
    when(jsonObjectToObjectConverter.convert(eventPayloadA, EventA.class)).thenReturn(eventA);
    when(jsonObjectToObjectConverter.convert(eventPayloadB, EventB.class)).thenReturn(eventB);
    when(eventStream.getId()).thenReturn(STREAM_ID);
    when(eventStream.read()).thenReturn(of(envelopeFrom(metadataWithRandomUUID("eventA"), eventPayloadA), envelopeFrom(metadataWithRandomUUID("eventB"), eventPayloadB)));
    when(snapshotService.getLatestVersionedAggregate(STREAM_ID, TestAggregate.class)).thenReturn(versionedAggregate);
    registerEvent(EventA.class, "eventA");
    registerEvent(EventB.class, "eventB");
    final TestAggregate aggregate = aggregateService.get(eventStream, TestAggregate.class);
    assertThat(aggregate, notNullValue());
    assertThat(aggregate.recordedEvents(), hasSize(2));
    assertThat(aggregate.recordedEvents().get(0), equalTo(eventA));
    assertThat(aggregate.recordedEvents().get(1), equalTo(eventB));
    verify(logger).info("Registering event {}, {} with DefaultAggregateService", "eventA", EventA.class);
    verify(logger).info("Registering event {}, {} with DefaultAggregateService", "eventB", EventB.class);
    verify(logger).trace("Recreating aggregate for instance {} of aggregate type {}", STREAM_ID, TestAggregate.class);
    verify(logger).trace("SnapshotAwareAggregateService Recreating aggregate for instance {} of aggregate type {}", STREAM_ID, TestAggregate.class);
}
Also used : EventB(uk.gov.justice.domain.event.EventB) TestAggregate(uk.gov.justice.domain.aggregate.TestAggregate) JsonObject(javax.json.JsonObject) EventA(uk.gov.justice.domain.event.EventA) VersionedAggregate(uk.gov.justice.domain.snapshot.VersionedAggregate) Test(org.junit.Test)

Example 15 with TestAggregate

use of uk.gov.justice.domain.aggregate.TestAggregate in project microservice_framework by CJSCommonPlatform.

the class SnapshotAwareAggregateServiceTest method shouldReplayDeltaOfEventsOnAggregate.

@Test
public void shouldReplayDeltaOfEventsOnAggregate() throws AggregateChangeDetectedException {
    defaultAggregateService.logger = logger;
    defaultAggregateService.jsonObjectToObjectConverter = jsonObjectToObjectConverter;
    final UUID streamId = UUID.randomUUID();
    final long currentStreamVersion = 5L;
    final TestAggregate aggregate = new TestAggregate();
    final long snapshotVersion = 2L;
    final JsonEnvelope jsonEventA = envelope().with(metadataWithRandomUUID("eventA")).withPayloadOf("value1", "name1").build();
    final JsonEnvelope jsonEventB = envelope().with(metadataWithRandomUUID("eventB")).withPayloadOf("value2", "name1").build();
    final JsonEnvelope jsonEventC = envelope().with(metadataWithRandomUUID("eventC")).withPayloadOf("value3", "name1").build();
    registerEvent(EventA.class, "eventA");
    registerEvent(EventB.class, "eventB");
    registerEvent(EventC.class, "eventC");
    final EventA eventA = new EventA("A1");
    final EventB eventB = new EventB("B1");
    final EventC eventC = new EventC("C1");
    when(eventStream.getId()).thenReturn(streamId);
    when(eventStream.getCurrentVersion()).thenReturn(currentStreamVersion);
    when(snapshotService.getLatestVersionedAggregate(streamId, TestAggregate.class)).thenReturn(Optional.of(new VersionedAggregate<>(snapshotVersion, aggregate)));
    when(eventStream.readFrom(snapshotVersion + 1)).thenReturn(of(jsonEventA, jsonEventB, jsonEventC));
    when(jsonObjectToObjectConverter.convert(jsonEventA.payloadAsJsonObject(), EventA.class)).thenReturn(eventA);
    when(jsonObjectToObjectConverter.convert(jsonEventB.payloadAsJsonObject(), EventB.class)).thenReturn(eventB);
    when(jsonObjectToObjectConverter.convert(jsonEventC.payloadAsJsonObject(), EventC.class)).thenReturn(eventC);
    aggregateService.get(eventStream, TestAggregate.class);
    assertThat(aggregate.recordedEvents(), hasItems(eventA, eventB, eventC));
}
Also used : EventB(uk.gov.justice.domain.event.EventB) EventC(uk.gov.justice.domain.event.EventC) TestAggregate(uk.gov.justice.domain.aggregate.TestAggregate) JsonEnvelope(uk.gov.justice.services.messaging.JsonEnvelope) EventA(uk.gov.justice.domain.event.EventA) MetadataBuilderFactory.metadataWithRandomUUID(uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) VersionedAggregate(uk.gov.justice.domain.snapshot.VersionedAggregate) Test(org.junit.Test)

Aggregations

TestAggregate (uk.gov.justice.domain.aggregate.TestAggregate)28 Test (org.junit.Test)27 UUID (java.util.UUID)8 UUID.randomUUID (java.util.UUID.randomUUID)8 JsonObject (javax.json.JsonObject)8 AggregateSnapshot (uk.gov.justice.domain.snapshot.AggregateSnapshot)8 MetadataBuilderFactory.metadataWithRandomUUID (uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID)8 EventA (uk.gov.justice.domain.event.EventA)7 VersionedAggregate (uk.gov.justice.domain.snapshot.VersionedAggregate)7 EventStream (uk.gov.justice.services.eventsourcing.source.core.EventStream)7 DefaultObjectInputStreamStrategy (uk.gov.justice.domain.snapshot.DefaultObjectInputStreamStrategy)5 EventA (uk.gov.justice.services.core.aggregate.event.EventA)5 JsonEnvelope (uk.gov.justice.services.messaging.JsonEnvelope)5 EventB (uk.gov.justice.domain.event.EventB)4 SnapshotAwareEnvelopeEventStream (uk.gov.justice.services.eventsourcing.source.core.SnapshotAwareEnvelopeEventStream)4 EventB (uk.gov.justice.services.core.aggregate.event.EventB)3 EventFoundEvent (uk.gov.justice.services.core.extension.EventFoundEvent)3 EnvelopeEventStream (uk.gov.justice.services.eventsourcing.source.core.EnvelopeEventStream)3 NoSerializableTestAggregate (uk.gov.justice.domain.aggregate.NoSerializableTestAggregate)2 EventC (uk.gov.justice.domain.event.EventC)2