Search in sources :

Example 6 with UtcClock

use of uk.gov.justice.services.common.util.UtcClock in project microservice_framework by CJSCommonPlatform.

the class EventsPageServiceTest method shouldReturnFeedWhenSameNumberOfRecordsAsPageSizeWhenLookingForNewerEvents.

@Test
public void shouldReturnFeedWhenSameNumberOfRecordsAsPageSizeWhenLookingForNewerEvents() throws Exception {
    final UUID streamId = randomUUID();
    final List<EventEntry> events = new ArrayList<>();
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create("http://server:123/context/"), create("event-streams/" + streamId));
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final JsonObject payloadEvent1 = createObjectBuilder().add("field1", "value1").build();
    final JsonObject payloadEvent2 = createObjectBuilder().add("field2", "value2").build();
    final EventEntry event1 = new EventEntry(randomUUID(), streamId, 1L, "Test Name1", payloadEvent1, new UtcClock().now().toString());
    final EventEntry event2 = new EventEntry(randomUUID(), streamId, 2L, "Test Name2", payloadEvent2, new UtcClock().now().toString());
    events.add(event2);
    events.add(event1);
    when(service.eventExists(streamId, 3L)).thenReturn(true);
    when(service.eventExists(streamId, 0L)).thenReturn(false);
    final URL nextUrl = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/3/FORWARD/2");
    when(urlLinkFactory.createEventsUrlLink(position(3L), FORWARD, 2, uriInfo)).thenReturn(nextUrl);
    final Position position = position(3L);
    when(positionFactory.createPosition("3")).thenReturn(position);
    when(service.events(streamId, position, FORWARD, 2L)).thenReturn(events);
    final Page<EventEntry> feedActual = eventsPageService.pageEvents(streamId, "3", FORWARD, 2, uriInfo);
    final List<EventEntry> feed = feedActual.getData();
    final PagingLinks pagingLinks = feedActual.getPagingLinks();
    assertThat(feed, hasSize(2));
    assertThat(feed.get(0).getStreamId(), is(streamId.toString()));
    assertThat(feed.get(0).getPosition(), is(2L));
    assertThat(feed.get(0).getPayload(), is(payloadEvent2));
    assertThat(feed.get(1).getStreamId(), is(streamId.toString()));
    assertThat(feed.get(1).getPosition(), is(1L));
    assertThat(feed.get(1).getPayload(), is(payloadEvent1));
    assertThat(pagingLinks.getNext().get(), is(nextUrl));
    assertThat(pagingLinks.getPrevious(), is(empty()));
    assertThat(pagingLinks.getHead(), is(headURL));
    assertThat(pagingLinks.getFirst(), is(firstURL));
}
Also used : UtcClock(uk.gov.justice.services.common.util.UtcClock) EventEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventEntry) Position(uk.gov.justice.services.eventsourcing.source.api.service.core.Position) ResteasyUriInfo(org.jboss.resteasy.spi.ResteasyUriInfo) ArrayList(java.util.ArrayList) JsonObject(javax.json.JsonObject) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) URL(java.net.URL) Test(org.junit.Test)

Example 7 with UtcClock

use of uk.gov.justice.services.common.util.UtcClock in project microservice_framework by CJSCommonPlatform.

the class EventsPageServiceTest method shouldReturnEventsWhenLessRecordsThanPageSizeWhenLookingForNewerEvents.

@Test
public void shouldReturnEventsWhenLessRecordsThanPageSizeWhenLookingForNewerEvents() throws Exception {
    final UUID streamId = randomUUID();
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create("http://server:123/context/"), create("event-stĀ¬reams/" + streamId));
    final List<EventEntry> events = new ArrayList<>();
    final EventEntry event1 = new EventEntry(randomUUID(), streamId, 3L, "Test Name3", createObjectBuilder().add("field3", "value3").build(), new UtcClock().now().toString());
    events.add(event1);
    when(service.eventExists(streamId, 4L)).thenReturn(true);
    when(service.eventExists(streamId, 2L)).thenReturn(false);
    final Position position = position(3L);
    when(positionFactory.createPosition("3")).thenReturn(position);
    when(service.events(streamId, position, FORWARD, 2L)).thenReturn(events);
    final URL nextUrl = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/4/FORWARD/2");
    when(urlLinkFactory.createEventsUrlLink(position(4L), FORWARD, 2, uriInfo)).thenReturn(nextUrl);
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final Page<EventEntry> pageEvents = eventsPageService.pageEvents(streamId, "3", FORWARD, 2, uriInfo);
    final List<EventEntry> pageEventsData = pageEvents.getData();
    final PagingLinks pagingLinks = pageEvents.getPagingLinks();
    assertThat(pageEventsData, hasSize(1));
    assertThat(pageEventsData.get(0).getStreamId(), is(streamId.toString()));
    assertThat(pageEventsData.get(0).getPosition(), is(3L));
    assertThat(pageEventsData.get(0).getPayload(), is(notNullValue()));
    assertThat(pagingLinks.getNext().get(), is(nextUrl));
    assertThat(pagingLinks.getPrevious(), is(empty()));
    assertThat(pagingLinks.getHead(), is(headURL));
    assertThat(pagingLinks.getFirst(), is(firstURL));
}
Also used : UtcClock(uk.gov.justice.services.common.util.UtcClock) EventEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventEntry) Position(uk.gov.justice.services.eventsourcing.source.api.service.core.Position) ResteasyUriInfo(org.jboss.resteasy.spi.ResteasyUriInfo) ArrayList(java.util.ArrayList) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) URL(java.net.URL) Test(org.junit.Test)

Example 8 with UtcClock

use of uk.gov.justice.services.common.util.UtcClock in project microservice_framework by CJSCommonPlatform.

the class EventsPageServiceTest method shouldReturnLinkForPage2OnHead.

@Test
public void shouldReturnLinkForPage2OnHead() throws Exception {
    final UUID streamId = randomUUID();
    final List<EventEntry> events = new ArrayList<>();
    final EventEntry event2 = new EventEntry(randomUUID(), streamId, 2L, "Test Name2", createObjectBuilder().add("field2", "value2").build(), new UtcClock().now().toString());
    final EventEntry event3 = new EventEntry(randomUUID(), streamId, 3L, "Test Name3", createObjectBuilder().add("field3", "value3").build(), new UtcClock().now().toString());
    events.add(event3);
    events.add(event2);
    when(service.eventExists(streamId, 1L)).thenReturn(true);
    when(positionFactory.createPosition(HEAD)).thenReturn(head());
    when(service.events(streamId, head(), BACKWARD, 2L)).thenReturn(events);
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create("http://server:123/context/"), create("event-streams/" + streamId));
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final URL previousURL = new URL(BASE_URL + EVENT_STREAM_PATH + "/" + streamId + "1/FORWARD/2");
    when(urlLinkFactory.createEventsUrlLink(position(1L), BACKWARD, 2, uriInfo)).thenReturn(previousURL);
    final Page<EventEntry> feed = eventsPageService.pageEvents(streamId, HEAD, BACKWARD, 2, uriInfo);
    assertTrue(feed.getPagingLinks().getNext().equals(empty()));
    assertThat(feed.getPagingLinks().getPrevious().get(), is(previousURL));
    assertThat(feed.getPagingLinks().getHead(), is(headURL));
    assertThat(feed.getPagingLinks().getFirst(), is(firstURL));
}
Also used : UtcClock(uk.gov.justice.services.common.util.UtcClock) EventEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventEntry) ResteasyUriInfo(org.jboss.resteasy.spi.ResteasyUriInfo) ArrayList(java.util.ArrayList) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) URL(java.net.URL) Test(org.junit.Test)

Example 9 with UtcClock

use of uk.gov.justice.services.common.util.UtcClock in project microservice_framework by CJSCommonPlatform.

the class EventsPageServiceTest method shouldReturnEventsWhenLessRecordsThanPageSizeWhenLookingForOlderEvents.

@Test
public void shouldReturnEventsWhenLessRecordsThanPageSizeWhenLookingForOlderEvents() throws Exception {
    final UUID streamId = randomUUID();
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create("http://server:123/context/"), create("event-streams/" + streamId));
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final URL previousUrl = new URL(BASE_URL + EVENT_STREAM_PATH + streamId + "/2/BACKWARD/2");
    when(urlLinkFactory.createEventsUrlLink(position(2L), BACKWARD, 2, uriInfo)).thenReturn(previousUrl);
    final List<EventEntry> events = new ArrayList<>();
    final EventEntry event1 = new EventEntry(randomUUID(), streamId, 3L, "Test Name3", createObjectBuilder().add("field3", "value3").build(), new UtcClock().now().toString());
    events.add(event1);
    when(service.eventExists(streamId, 4L)).thenReturn(false);
    when(service.eventExists(streamId, 2L)).thenReturn(true);
    final Position position = position(3L);
    when(positionFactory.createPosition("3")).thenReturn(position);
    when(service.events(streamId, position, BACKWARD, 2L)).thenReturn(events);
    final Page<EventEntry> feedActual = eventsPageService.pageEvents(streamId, "3", BACKWARD, 2, uriInfo);
    final List<EventEntry> feed = feedActual.getData();
    final PagingLinks pagingLinks = feedActual.getPagingLinks();
    assertThat(feed, hasSize(1));
    assertThat(feed.get(0).getStreamId(), is(streamId.toString()));
    assertThat(feed.get(0).getPosition(), is(3L));
    assertThat(feed.get(0).getPayload(), is(notNullValue()));
    assertThat(pagingLinks.getPrevious().get(), is(previousUrl));
    assertThat(pagingLinks.getNext(), is(empty()));
    assertThat(pagingLinks.getHead(), is(headURL));
    assertThat(pagingLinks.getFirst(), is(firstURL));
}
Also used : UtcClock(uk.gov.justice.services.common.util.UtcClock) EventEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventEntry) Position(uk.gov.justice.services.eventsourcing.source.api.service.core.Position) ResteasyUriInfo(org.jboss.resteasy.spi.ResteasyUriInfo) ArrayList(java.util.ArrayList) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) URL(java.net.URL) Test(org.junit.Test)

Example 10 with UtcClock

use of uk.gov.justice.services.common.util.UtcClock in project microservice_framework by CJSCommonPlatform.

the class CakeShopIT method shouldSetDateCreatedTimestampInEventStore.

@Test
public void shouldSetDateCreatedTimestampInEventStore() {
    final UUID orderId = randomUUID();
    final Response commandResponse = sendTo(ORDERS_RESOURCE_URI + orderId.toString()).request().post(entity(jsonObject().add("recipeId", randomUUID().toString()).add("deliveryDate", "2016-01-21T23:42:03.522+07:00").build().toString(), ORDER_CAKE_MEDIA_TYPE));
    assertThat(commandResponse.getStatus(), is(ACCEPTED));
    await().until(() -> queryForOrder(orderId.toString()).httpCode() == OK);
    final Stream<Event> events = EVENT_LOG_REPOSITORY.findByStreamIdOrderByPositionAsc(orderId);
    final Event event = events.findFirst().get();
    assertThat(event.getCreatedAt(), is(notNullValue()));
    assertThat(event.getCreatedAt(), is(within(10L, SECONDS, new UtcClock().now())));
}
Also used : HttpResponse(org.apache.http.HttpResponse) Response(javax.ws.rs.core.Response) ApiResponse(uk.gov.justice.services.example.cakeshop.it.util.ApiResponse) UtcClock(uk.gov.justice.services.common.util.UtcClock) Event(uk.gov.justice.services.eventsourcing.repository.jdbc.event.Event) UUID(java.util.UUID) UUID.randomUUID(java.util.UUID.randomUUID) Test(org.junit.Test)

Aggregations

UtcClock (uk.gov.justice.services.common.util.UtcClock)13 Test (org.junit.Test)10 UUID (java.util.UUID)9 UUID.randomUUID (java.util.UUID.randomUUID)8 URL (java.net.URL)6 ArrayList (java.util.ArrayList)6 ResteasyUriInfo (org.jboss.resteasy.spi.ResteasyUriInfo)6 EventEntry (uk.gov.justice.services.eventsourcing.source.api.service.core.EventEntry)6 Position (uk.gov.justice.services.eventsourcing.source.api.service.core.Position)4 JsonObject (javax.json.JsonObject)2 ObjectToJsonValueConverter (uk.gov.justice.services.common.converter.ObjectToJsonValueConverter)2 ObjectMapperProducer (uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer)2 DefaultEnveloper (uk.gov.justice.services.core.enveloper.DefaultEnveloper)2 Event (uk.gov.justice.services.eventsourcing.repository.jdbc.event.Event)2 JsonEnvelope (uk.gov.justice.services.messaging.JsonEnvelope)2 Metadata (uk.gov.justice.services.messaging.Metadata)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 SQLException (java.sql.SQLException)1 ZonedDateTime (java.time.ZonedDateTime)1 Response (javax.ws.rs.core.Response)1