package com.bagri.rest.service;
import static com.bagri.rest.RestConstants.bg_cookie;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Properties;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import com.bagri.core.api.DocumentManagement;
import com.bagri.core.api.SchemaRepository;
import com.bagri.rest.BagriRestServer;
import com.bagri.rest.RepositoryProvider;
public class CollectionServiceTest extends JerseyTest {
private DocumentManagement docMgr;
private SchemaRepository mockRepo;
private RepositoryProvider mockPro;
@Override
protected Application configure() {
docMgr = mock(DocumentManagement.class);
mockRepo = mock(SchemaRepository.class);
mockPro = mock(RepositoryProvider.class);
when(mockPro.getRepository("client-id")).thenReturn(mockRepo);
when(mockRepo.getDocumentManagement()).thenReturn(docMgr);
BagriRestServer server = new BagriRestServer(mockPro, null, new Properties());
return server.buildConfig();
}
@Test
@SuppressWarnings("unchecked")
public void testCollectionService() throws Exception {
Collection<String> expected = new ArrayList<>();
expected.add("customers");
expected.add("securities");
expected.add("orders");
when(docMgr.getCollections()).thenReturn(expected);
Collection<String> response = target("clns").request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id").get(Collection.class);
assertEquals(expected.size(), response.size());
for (String name: expected) {
assertTrue(response.contains(name));
}
expected = new ArrayList<>();
expected.add("security1500.xml");
expected.add("security5621.xml");
expected.add("security9012.xml");
when(docMgr.getCollectionDocumentUris("securities")).thenReturn(expected);
response = target("clns").path("securities").request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id").get(Collection.class);
assertEquals(expected.size(), response.size());
for (String name: expected) {
assertTrue(response.contains(name));
}
when(docMgr.removeCollectionDocuments("securities")).thenReturn(3);
int deleted = target("clns").path("securities").request()
.cookie(bg_cookie, "client-id").delete(Integer.class);
}
}