package net.objectlab.kit.pf.ucits;
import static net.objectlab.kit.util.BigDecimalUtil.bd;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.StrictAssertions.assertThat;
import static org.mockito.BDDMockito.given;
import java.util.ArrayList;
import java.util.List;
import net.objectlab.kit.pf.AssetDetailsProvider;
import net.objectlab.kit.pf.AssetEligibilityProvider;
import net.objectlab.kit.pf.BasicAsset;
import net.objectlab.kit.pf.BasicLine;
import net.objectlab.kit.pf.BasicPortfolio;
import net.objectlab.kit.pf.ExistingPortfolioLine;
import net.objectlab.kit.pf.ValidationResults;
import net.objectlab.kit.pf.ucits.BasicUcitsConcentrationValidator.Builder;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class BasicUcitsConcentrationValidatorTest {
private BasicUcitsConcentrationValidator validator;
@Mock
private AssetDetailsProvider assetDetailsProvider;
@Mock
private AssetEligibilityProvider assetEligibilityProvider;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
final Builder builder = new BasicUcitsConcentrationValidator.Builder().assetDetailsProvider(assetDetailsProvider).assetEligibilityProvider(
assetEligibilityProvider);
validator = new BasicUcitsConcentrationValidator(builder);
given(assetEligibilityProvider.isEligible(Matchers.anyString())).willReturn(true);
given(assetDetailsProvider.getDetails(Matchers.eq("IBM"))).willReturn(new BasicAsset("IBM", "IBM", "VGRQXHF3J8VDLUA7XE92"));
}
@Test
public void testValidateEmpty() {
final BasicPortfolio bp = new BasicPortfolio();
final ValidationResults res = validator.validate(bp);
assertThat(res).isNotNull();
assertThat(res.getLines()).isEmpty();
}
@Test
public void testValidate1Line() {
final BasicPortfolio bp = new BasicPortfolio();
bp.setPortfolioCcy("USD");
bp.setPortfolioValue(bd("8800"));
final List<ExistingPortfolioLine> lines = new ArrayList<>();
lines.add(new BasicLine("IBM", "International Business Machine", bd("88"), bd("100"), bd("8800")));
bp.setLines(lines);
final ValidationResults res = validator.validate(bp);
assertThat(res).isNotNull();
assertThat(res.getLines()).hasSize(1);
System.out.println(res);
}
}