/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.position.impl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertSame;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import org.threeten.bp.Instant;
import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.master.position.ManageableTrade;
import com.opengamma.master.position.PositionDocument;
import com.opengamma.master.position.PositionHistoryRequest;
import com.opengamma.master.position.PositionHistoryResult;
import com.opengamma.master.position.PositionMaster;
import com.opengamma.master.position.PositionSearchRequest;
import com.opengamma.master.position.PositionSearchResult;
import com.opengamma.util.paging.Paging;
import com.opengamma.util.paging.PagingRequest;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link QuerySplittingPositionMaster} class.
*/
@Test(groups = TestGroup.UNIT)
public class QuerySplittingPositionMasterTest {
public void testSearch_disabled() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final PositionSearchRequest request = new PositionSearchRequest();
final PositionSearchResult result = new PositionSearchResult();
Mockito.when(mock.search(request)).thenReturn(result);
assertEquals(instance.getMaxSearchRequest(), 0);
assertSame(instance.search(request), result);
}
public void testSearch_no_positions() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final PositionSearchRequest request = new PositionSearchRequest();
final PositionSearchResult result = new PositionSearchResult();
Mockito.when(mock.search(request)).thenReturn(result);
instance.setMaxSearchRequest(Integer.MAX_VALUE);
assertSame(instance.search(request), result);
}
public void testSearch_small() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final PositionSearchRequest request = new PositionSearchRequest();
request.addPositionObjectId(ObjectId.of("Foo", "Bar"));
final PositionSearchResult result = new PositionSearchResult();
Mockito.when(mock.search(request)).thenReturn(result);
instance.setMaxSearchRequest(1);
assertSame(instance.search(request), result);
}
public void testSearch_invalid_paging() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final PositionSearchRequest request = new PositionSearchRequest();
request.addPositionObjectId(ObjectId.of("Test", "1"));
request.addPositionObjectId(ObjectId.of("Test", "2"));
request.setPagingRequest(PagingRequest.FIRST_PAGE);
final PositionSearchResult result = new PositionSearchResult();
Mockito.when(mock.search(request)).thenReturn(result);
instance.setMaxSearchRequest(1);
assertSame(instance.search(request), result);
request.setPagingRequest(PagingRequest.ONE);
assertSame(instance.search(request), result);
}
public void testSearch_large_page_all() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final VersionCorrection now = VersionCorrection.of(Instant.now(), Instant.now());
final PositionSearchRequest request = new PositionSearchRequest();
request.addPositionObjectId(ObjectId.of("Test", "1"));
request.addPositionObjectId(ObjectId.of("Test", "2"));
request.addPositionObjectId(ObjectId.of("Test", "3"));
request.addPositionObjectId(ObjectId.of("Test", "4"));
request.addPositionObjectId(ObjectId.of("Test", "5"));
final PositionSearchRequest request1 = new PositionSearchRequest();
request1.addPositionObjectId(ObjectId.of("Test", "1"));
final PositionSearchResult result1 = new PositionSearchResult();
result1.setPaging(Paging.of(PagingRequest.ALL, 1));
result1.setVersionCorrection(now);
final PositionDocument doc1 = Mockito.mock(PositionDocument.class);
result1.getDocuments().add(doc1);
Mockito.when(mock.search(request1)).thenReturn(result1);
final PositionSearchRequest request2 = new PositionSearchRequest();
request2.addPositionObjectId(ObjectId.of("Test", "2"));
request2.addPositionObjectId(ObjectId.of("Test", "3"));
final PositionSearchResult result2 = new PositionSearchResult();
result2.setPaging(Paging.of(PagingRequest.ALL, 2));
result2.setVersionCorrection(now);
final PositionDocument doc2 = Mockito.mock(PositionDocument.class);
result2.getDocuments().add(doc2);
final PositionDocument doc3 = Mockito.mock(PositionDocument.class);
result2.getDocuments().add(doc3);
Mockito.when(mock.search(request2)).thenReturn(result2);
final PositionSearchRequest request3 = new PositionSearchRequest();
request3.addPositionObjectId(ObjectId.of("Test", "4"));
request3.addPositionObjectId(ObjectId.of("Test", "5"));
final PositionSearchResult result3 = new PositionSearchResult();
result3.setPaging(Paging.of(PagingRequest.ALL, 2));
result3.setVersionCorrection(now);
final PositionDocument doc4 = Mockito.mock(PositionDocument.class);
result3.getDocuments().add(doc4);
final PositionDocument doc5 = Mockito.mock(PositionDocument.class);
result3.getDocuments().add(doc5);
Mockito.when(mock.search(request3)).thenReturn(result3);
instance.setMaxSearchRequest(2);
final PositionSearchResult result = new PositionSearchResult();
result.setPaging(Paging.of(PagingRequest.ALL, 5));
result.setVersionCorrection(now);
result.getDocuments().add(doc1);
result.getDocuments().add(doc2);
result.getDocuments().add(doc3);
result.getDocuments().add(doc4);
result.getDocuments().add(doc5);
assertEquals(instance.search(request), result);
}
public void testHistory() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final PositionHistoryRequest request = new PositionHistoryRequest();
final PositionHistoryResult result = new PositionHistoryResult();
Mockito.when(mock.history(request)).thenReturn(result);
assertSame(instance.history(request), result);
}
public void testGetTrade() {
final PositionMaster mock = Mockito.mock(PositionMaster.class);
final QuerySplittingPositionMaster instance = new QuerySplittingPositionMaster(mock);
final ManageableTrade trade = Mockito.mock(ManageableTrade.class);
Mockito.when(mock.getTrade(UniqueId.of("Foo", "Bar"))).thenReturn(trade);
assertSame(instance.getTrade(UniqueId.of("Foo", "Bar")), trade);
}
}