Skip to content
This repository has been archived by the owner on Jul 29, 2021. It is now read-only.

Commit

Permalink
feat(repository): Preserve a single method to search for events.
Browse files Browse the repository at this point in the history
  • Loading branch information
brasseld committed Sep 2, 2016
1 parent bdfedea commit 63eb8b8
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 73 deletions.
123 changes: 78 additions & 45 deletions src/test/java/io/gravitee/repository/EventRepositoryTest.java
Expand Up @@ -17,13 +17,19 @@

import io.gravitee.common.data.domain.Page;
import io.gravitee.repository.config.AbstractRepositoryTest;
import io.gravitee.repository.management.api.search.EventCriteria;
import io.gravitee.repository.management.api.search.builder.PageableBuilder;
import io.gravitee.repository.management.model.Event;
import io.gravitee.repository.management.model.EventType;
import org.junit.Test;

import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Optional;

import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class EventRepositoryTest extends AbstractRepositoryTest {

Expand All @@ -35,6 +41,7 @@ protected String getTestCasesPath() {
@Test
public void createEventTest() throws Exception {
Event event = new Event();
event.setId(io.gravitee.common.utils.UUID.random().toString());
event.setType(EventType.PUBLISH_API);
event.setPayload("{}");
event.setParentId(null);
Expand All @@ -44,7 +51,7 @@ public void createEventTest() throws Exception {
Event eventCreated = eventRepository.create(event);

assertEquals("Invalid saved event type.", EventType.PUBLISH_API, eventCreated.getType());
assertEquals("Invalid saved event paylod.", "{}", eventCreated.getPayload());
assertEquals("Invalid saved event payload.", "{}", eventCreated.getPayload());
}

@Test
Expand All @@ -54,76 +61,102 @@ public void findByIdTest() throws Exception {
assertEquals(EventType.PUBLISH_API, event.get().getType());
}

@Test
public void findByType() throws Exception {
Set<Event> events = eventRepository.findByType(Arrays.asList(EventType.PUBLISH_API, EventType.UNPUBLISH_API));
assertEquals(3, events.size());
Optional<Event> event = events.stream().sorted((e1, e2) -> e2.getCreatedAt().compareTo(e1.getCreatedAt())).findFirst();
assertTrue(event.isPresent());
assertTrue("event3".equals(event.get().getId()));
}

@Test
public void findByApi() throws Exception {
String apiId = "api-1";
Set<Event> events = eventRepository.findByProperty(Event.EventProperties.API_ID.getValue(), apiId);
assertEquals(2, events.size());
Optional<Event> event = events.stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue(event.isPresent());
assertTrue("event1".equals(event.get().getId()));
}

@Test
public void searchNoResults() {
Map<String, Object> values = new HashMap<>();
values.put("type", EventType.START_API.toString());
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder().from(1420070400000L).to(1422748800000L).types(EventType.START_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build());

Page<Event> eventPage = eventRepository.search(values, 1420070400000l, 1422748800000l, 0, 10);
assertTrue(0l == eventPage.getTotalElements());
assertTrue(0L == eventPage.getTotalElements());
}

@Test
public void searchBySingleEventType() throws Exception {
Map<String, Object> values = new HashMap<>();
values.put("type", EventType.START_API.toString());

Page<Event> eventPage = eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10);
assertTrue(2l == eventPage.getTotalElements());
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder().from(1451606400000L).to(1470157767000L).types(EventType.START_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build());
assertTrue(2L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event5".equals(event.get().getId()));
}

@Test
public void searchByMultipleEventType() throws Exception {
Map<String, Object> values = new HashMap<>();
values.put("type", Arrays.asList(EventType.START_API.toString(), EventType.STOP_API.toString()));
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder().from(1451606400000L).to(1470157767000L).types(EventType.START_API, EventType.STOP_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build());

Page<Event> eventPage = eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10);
assertTrue(3l == eventPage.getTotalElements());
assertTrue(3L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event4".equals(event.get().getId()));
}

@Test
public void searchByAPIId() throws Exception {
Map<String, Object> values = new HashMap<>();
values.put("properties.api_id", "api-1");
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-1")
.build(),
new PageableBuilder().pageNumber(0).pageSize(10).build());

assertTrue(2L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event1".equals(event.get().getId()));
}

Page<Event> eventPage = eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10);
assertTrue(2l == eventPage.getTotalElements());
@Test
public void searchByAPI_EmptyPageable() throws Exception {
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-1")
.build(),
null);

assertTrue(2L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event1".equals(event.get().getId()));
}

@Test
public void searchByMixProperties() throws Exception {
Map<String, Object> values = new HashMap<>();
values.put("type", Arrays.asList(EventType.START_API.toString(), EventType.STOP_API.toString()));
values.put("properties.api_id", "api-3");

Page<Event> eventPage = eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10);
assertTrue(1l == eventPage.getTotalElements());
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-3")
.types(EventType.START_API, EventType.STOP_API)
.build(),
new PageableBuilder().pageNumber(0).pageSize(10).build());

assertTrue(1L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event4".equals(event.get().getId()));
}

@Test
public void searchByCollectionProperty() throws Exception {
Page<Event> eventPage = eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), Arrays.asList("api-1", "api-3"))
.build(), null);

assertTrue(3L == eventPage.getTotalElements());
Optional<Event> event = eventPage.getContent().stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event1".equals(event.get().getId()));
}

@Test
public void searchByCollectionPropertyWithoutPaging() throws Exception {
List<Event> events = eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), Arrays.asList("api-1", "api-3"))
.build());

assertTrue(3L == events.size());
Optional<Event> event = events.stream().sorted((e1, e2) -> e1.getCreatedAt().compareTo(e2.getCreatedAt())).findFirst();
assertTrue("event1".equals(event.get().getId()));
}
}
6 changes: 6 additions & 0 deletions src/test/java/io/gravitee/repository/UserRepositoryTest.java
Expand Up @@ -60,4 +60,10 @@ public void findAllTest() throws Exception {
Assert.assertNotNull(users);
Assert.assertEquals("Invalid user numbers in find all", 6, users.size());
}

@Test
public void findUserByNameTest() throws Exception {
Optional<User> user = userRepository.findByUsername("user0");
Assert.assertTrue(user.isPresent());
}
}
Expand Up @@ -17,6 +17,8 @@

import io.gravitee.common.data.domain.Page;
import io.gravitee.repository.management.api.*;
import io.gravitee.repository.management.api.search.EventCriteria;
import io.gravitee.repository.management.api.search.builder.PageableBuilder;
import io.gravitee.repository.management.model.*;
import org.springframework.context.annotation.Bean;

Expand Down Expand Up @@ -130,15 +132,15 @@ public EventRepository eventRepository() throws Exception {
final Page<Event> pageEvent3 = mock(Page.class);
final Page<Event> pageEvent4 = mock(Page.class);
final Page<Event> pageEvent5 = mock(Page.class);
final Page<Event> pageEvent6 = mock(Page.class);
final Page<Event> pageEvent7 = mock(Page.class);

Map<String, String> eventProperties = new HashMap<>();
eventProperties.put("api_id", "api-1");

Map<String, String> eventProperties2 = new HashMap<>();
eventProperties.put("api_id", "api-4");

when(eventRepository.findByProperty(Event.EventProperties.API_ID.getValue(), "api-1"))
.thenReturn(newSet(event1, event2));
when(event1.getId()).thenReturn("event1");
when(event1.getCreatedAt()).thenReturn(parse("11/02/2016"));
when(event1.getType()).thenReturn(EventType.PUBLISH_API);
Expand All @@ -162,44 +164,70 @@ public EventRepository eventRepository() throws Exception {
when(event6.getType()).thenReturn(EventType.START_API);
when(event6.getCreatedAt()).thenReturn(parse("16/02/2016"));


when(eventRepository.findByType(Arrays.asList(EventType.PUBLISH_API, EventType.UNPUBLISH_API)))
.thenReturn(newSet(event1, event2, event3));

when(eventRepository.findById("event1")).thenReturn(of(event1));

when(eventRepository.create(any(Event.class))).thenReturn(event1);

Map<String, Object> values = new HashMap<>();
values.put("type", EventType.START_API.toString());
when(pageEvent.getTotalElements()).thenReturn(2l);
when(pageEvent.getTotalElements()).thenReturn(2L);
when(pageEvent.getContent()).thenReturn(Arrays.asList(event5, event6));
when(eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10)).thenReturn(pageEvent);
when(eventRepository.search(
new EventCriteria.Builder().from(1451606400000L).to(1470157767000L).types(EventType.START_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build())).thenReturn(pageEvent);

values = new HashMap<>();
values.put("type", Arrays.asList(EventType.START_API.toString(), EventType.STOP_API.toString()));
when(pageEvent2.getTotalElements()).thenReturn(3l);
when(pageEvent2.getTotalElements()).thenReturn(3L);
when(pageEvent2.getContent()).thenReturn(Arrays.asList(event4, event5, event6));
when(eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10)).thenReturn(pageEvent2);
when(eventRepository.search(
new EventCriteria.Builder().from(1451606400000L).to(1470157767000L).types(EventType.START_API, EventType.STOP_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build())).thenReturn(pageEvent2);

values = new HashMap<>();
values.put("properties.api_id", "api-1");
when(pageEvent3.getTotalElements()).thenReturn(2l);
when(pageEvent3.getTotalElements()).thenReturn(2L);
when(pageEvent3.getContent()).thenReturn(Arrays.asList(event1, event2));
when(eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10)).thenReturn(pageEvent3);

values = new HashMap<>();
values.put("type", EventType.START_API.toString());
when(pageEvent4.getTotalElements()).thenReturn(0l);
when(eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-1")
.build(),
new PageableBuilder().pageNumber(0).pageSize(10).build())).thenReturn(pageEvent3);

when(pageEvent4.getTotalElements()).thenReturn(0L);
when(pageEvent4.getContent()).thenReturn(Collections.emptyList());
when(eventRepository.search(values, 1420070400000l, 1422748800000l, 0, 10)).thenReturn(pageEvent4);
when(eventRepository.search(
new EventCriteria.Builder().from(1420070400000L).to(1422748800000L).types(EventType.START_API).build(),
new PageableBuilder().pageNumber(0).pageSize(10).build())).thenReturn(pageEvent4);

values = new HashMap<>();
values.put("type", Arrays.asList(EventType.START_API.toString(), EventType.STOP_API.toString()));
values.put("properties.api_id", "api-3");
when(pageEvent5.getTotalElements()).thenReturn(1l);
when(pageEvent5.getTotalElements()).thenReturn(1L);
when(pageEvent5.getContent()).thenReturn(Arrays.asList(event4));
when(eventRepository.search(values, 1451606400000l, 1470157767000l, 0, 10)).thenReturn(pageEvent5);
when(eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-3")
.types(EventType.START_API, EventType.STOP_API)
.build(),
new PageableBuilder().pageNumber(0).pageSize(10).build())).thenReturn(pageEvent5);

when(pageEvent6.getTotalElements()).thenReturn(2L);
when(pageEvent6.getContent()).thenReturn(Arrays.asList(event1, event2));
when(eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), "api-1")
.build(),
null)).thenReturn(pageEvent6);

when(pageEvent7.getTotalElements()).thenReturn(3L);
when(pageEvent7.getContent()).thenReturn(Arrays.asList(event1, event2));
when(eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), Arrays.asList("api-1", "api-3"))
.build(),
null)).thenReturn(pageEvent7);

when(eventRepository.search(
new EventCriteria.Builder()
.from(1451606400000L).to(1470157767000L)
.property(Event.EventProperties.API_ID.getValue(), Arrays.asList("api-1", "api-3"))
.build())).thenReturn(Arrays.asList(event1, event2, event4));

return eventRepository;
}
Expand All @@ -213,6 +241,7 @@ public UserRepository userRepository() throws Exception {
mock(User.class), mock(User.class), mock(User.class)));
when(userRepository.create(any(User.class))).thenReturn(user);
when(userRepository.findByUsername("createuser1")).thenReturn(of(user));
when(userRepository.findByUsername("user0")).thenReturn(of(user));
when(user.getUsername()).thenReturn("createuser1");
when(user.getEmail()).thenReturn("createuser1@gravitee.io");

Expand Down

0 comments on commit 63eb8b8

Please sign in to comment.