Search in sources :

Example 6 with EventStreamEntry

use of uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry in project microservice_framework by CJSCommonPlatform.

the class EventStreamPageServiceTest method shouldReturnFeedWhenSameNumberOfRecordsAsPageSizeWhenLookingForOlderEvents.

@Test
public void shouldReturnFeedWhenSameNumberOfRecordsAsPageSizeWhenLookingForOlderEvents() throws Exception {
    final UUID streamId3 = randomUUID();
    final UUID streamId4 = randomUUID();
    final List<EventStreamEntry> eventStreams = new ArrayList<>();
    final EventStreamEntry event4 = new EventStreamEntry(streamId4.toString(), 4L);
    final EventStreamEntry event3 = new EventStreamEntry(streamId3.toString(), 3L);
    eventStreams.add(event4);
    eventStreams.add(event3);
    when(service.eventStreamExists(5L)).thenReturn(false);
    when(service.eventStreamExists(2L)).thenReturn(true);
    final Position position = position(4L);
    when(positionFactory.createPosition("4")).thenReturn(position);
    when(service.eventStreams(position, BACKWARD, 2L)).thenReturn(eventStreams);
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create(BASE_URL), create(EVENT_STREAM_PATH));
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventStreamsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventStreamsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final URL streamId3SelfUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/" + streamId4 + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createEventStreamSelfUrlLink(streamId3.toString(), 2, uriInfo)).thenReturn(streamId3SelfUrl);
    final URL streamId4SelfUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/" + streamId4 + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createEventStreamSelfUrlLink(streamId4.toString(), 2, uriInfo)).thenReturn(streamId4SelfUrl);
    final URL previousUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/2/BACKWARD/2");
    when(urlLinkFactory.createEventStreamUrlLink(position(2L), BACKWARD, 2, uriInfo)).thenReturn(previousUrl);
    final Page<EventStreamPageEntry> feedActual = eventStreamPageService.pageOfEventStream("4", BACKWARD, PAGE_SIZE, uriInfo);
    final List<EventStreamPageEntry> feed = feedActual.getData();
    final PagingLinks paging = feedActual.getPagingLinks();
    assertThat(feed, hasSize(2));
    assertThat(feed.get(0).getSelf(), is(streamId4SelfUrl.toString()));
    assertThat(feed.get(0).getSequenceNumber(), is(4L));
    assertThat(feed.get(1).getSelf(), is(streamId3SelfUrl.toString()));
    assertThat(feed.get(1).getSequenceNumber(), is(3L));
    assertThat(paging.getNext(), is(Optional.empty()));
    assertThat(paging.getPrevious().get(), is(previousUrl));
    assertThat(paging.getHead(), is(headURL));
    assertThat(paging.getFirst(), is(firstURL));
}
Also used : EventStreamEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry) 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 7 with EventStreamEntry

use of uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry in project microservice_framework by CJSCommonPlatform.

the class EventStreamPageServiceTest method shouldReturnLinkForPreviousPageIfOnHead.

@Test
public void shouldReturnLinkForPreviousPageIfOnHead() throws Exception {
    final ResteasyUriInfo uriInfo = new ResteasyUriInfo(create(BASE_URL), create(EVENT_STREAM_PATH));
    final List<EventStreamEntry> eventStreams = new ArrayList<>();
    String streamId2 = randomUUID().toString();
    final EventStreamEntry event2 = new EventStreamEntry(streamId2, 2L);
    String streamId3 = randomUUID().toString();
    final EventStreamEntry event3 = new EventStreamEntry(streamId3, 3L);
    eventStreams.add(event3);
    eventStreams.add(event2);
    when(service.eventStreamExists(1L)).thenReturn(true);
    when(positionFactory.createPosition(HEAD)).thenReturn(head());
    when(service.eventStreams(head(), BACKWARD, 2L)).thenReturn(eventStreams);
    final URL headURL = new URL(BASE_URL + EVENT_STREAM_PATH + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createHeadEventStreamsUrlLink(2, uriInfo)).thenReturn(headURL);
    final URL firstURL = new URL(BASE_URL + EVENT_STREAM_PATH + "/1/FORWARD/2");
    when(urlLinkFactory.createFirstEventStreamsUrlLink(2, uriInfo)).thenReturn(firstURL);
    final URL streamId3SelfUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/" + streamId3 + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createEventStreamSelfUrlLink(streamId3, 2, uriInfo)).thenReturn(streamId3SelfUrl);
    final URL streamId2SelfUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/" + streamId2 + "/HEAD/BACKWARD/2");
    when(urlLinkFactory.createEventStreamSelfUrlLink(streamId2, 2, uriInfo)).thenReturn(streamId2SelfUrl);
    final URL previousUrl = new URL(BASE_URL + EVENT_STREAM_PATH + "/1/BACKWARD/2");
    when(urlLinkFactory.createEventStreamUrlLink(position(1L), BACKWARD, 2, uriInfo)).thenReturn(previousUrl);
    final Page<EventStreamPageEntry> pageOfEventStream = eventStreamPageService.pageOfEventStream(HEAD, BACKWARD, PAGE_SIZE, uriInfo);
    assertTrue(pageOfEventStream.getPagingLinks().getNext().equals(Optional.empty()));
    PagingLinks pagingLinks = pageOfEventStream.getPagingLinks();
    assertTrue(pagingLinks.getPrevious().get().toString().equals(previousUrl.toString()));
    assertThat(pagingLinks.getHead(), is(headURL));
    assertThat(pagingLinks.getFirst(), is(firstURL));
}
Also used : EventStreamEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry) ResteasyUriInfo(org.jboss.resteasy.spi.ResteasyUriInfo) ArrayList(java.util.ArrayList) URL(java.net.URL) Test(org.junit.Test)

Example 8 with EventStreamEntry

use of uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry in project microservice_framework by CJSCommonPlatform.

the class EventStreamPageService method convertStreamIdToSelfLinks.

private List<EventStreamPageEntry> convertStreamIdToSelfLinks(final List<EventStreamEntry> eventStreamEntries, final int pageSize, final UriInfo uriInfo) throws MalformedURLException {
    final List<EventStreamPageEntry> entriesWithSelfLinks = new ArrayList<>();
    for (EventStreamEntry eventStreamEntry : eventStreamEntries) {
        final URL selfLink = urlLinkFactory.createEventStreamSelfUrlLink(eventStreamEntry.getStreamId(), pageSize, uriInfo);
        final EventStreamPageEntry eventStreamEntryWithSelfLink = new EventStreamPageEntry(selfLink.toString(), eventStreamEntry.getSequenceNumber());
        entriesWithSelfLinks.add(eventStreamEntryWithSelfLink);
    }
    return entriesWithSelfLinks;
}
Also used : EventStreamEntry(uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry) ArrayList(java.util.ArrayList) URL(java.net.URL)

Aggregations

URL (java.net.URL)8 EventStreamEntry (uk.gov.justice.services.eventsourcing.source.api.service.core.EventStreamEntry)8 ArrayList (java.util.ArrayList)7 ResteasyUriInfo (org.jboss.resteasy.spi.ResteasyUriInfo)7 Test (org.junit.Test)7 UUID (java.util.UUID)5 UUID.randomUUID (java.util.UUID.randomUUID)5 Position (uk.gov.justice.services.eventsourcing.source.api.service.core.Position)5 Direction (uk.gov.justice.services.eventsourcing.source.api.service.core.Direction)1