Search in sources :

Example 1 with AggregateChangeDetectedException

use of uk.gov.justice.services.core.aggregate.exception.AggregateChangeDetectedException in project microservice_framework by CJSCommonPlatform.

the class SnapshotAwareAggregateServiceTest method shouldRebuildAggregateOnModelChange.

@Test
public void shouldRebuildAggregateOnModelChange() throws AggregateChangeDetectedException {
    defaultAggregateService.logger = logger;
    defaultAggregateService.jsonObjectToObjectConverter = jsonObjectToObjectConverter;
    final UUID streamId = UUID.randomUUID();
    final long currentStreamVersion = 3L;
    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);
    doThrow(new AggregateChangeDetectedException("Aggregate Change Detected")).when(snapshotService).getLatestVersionedAggregate(streamId, TestAggregate.class);
    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);
    when(eventStream.read()).thenReturn(of(jsonEventA, jsonEventB, jsonEventC));
    final TestAggregate aggregate1 = aggregateService.get(eventStream, TestAggregate.class);
    verify(snapshotService).removeAllSnapshots(streamId, TestAggregate.class);
    assertThat(aggregate1.recordedEvents(), hasItems(eventA, eventB, eventC));
}
Also used : AggregateChangeDetectedException(uk.gov.justice.services.core.aggregate.exception.AggregateChangeDetectedException) 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) Test(org.junit.Test)

Aggregations

UUID (java.util.UUID)1 UUID.randomUUID (java.util.UUID.randomUUID)1 Test (org.junit.Test)1 TestAggregate (uk.gov.justice.domain.aggregate.TestAggregate)1 EventA (uk.gov.justice.domain.event.EventA)1 EventB (uk.gov.justice.domain.event.EventB)1 EventC (uk.gov.justice.domain.event.EventC)1 AggregateChangeDetectedException (uk.gov.justice.services.core.aggregate.exception.AggregateChangeDetectedException)1 JsonEnvelope (uk.gov.justice.services.messaging.JsonEnvelope)1 MetadataBuilderFactory.metadataWithRandomUUID (uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID)1