use of com.github.robozonky.api.strategies.PortfolioOverview in project robozonky by RoboZonky.
the class NaturalLanguagePurchaseStrategyTest method unacceptablePortfolioDueToLowBalance.
@Test
void unacceptablePortfolioDueToLowBalance() {
final ParsedStrategy p = new ParsedStrategy(DefaultPortfolio.EMPTY);
final PurchaseStrategy s = new NaturalLanguagePurchaseStrategy(p);
final PortfolioOverview portfolio = mock(PortfolioOverview.class);
when(portfolio.getCzkAvailable()).thenReturn(p.getMinimumBalance() - 1);
final Stream<RecommendedParticipation> result = s.recommend(Collections.singletonList(mockDescriptor()), portfolio, new Restrictions());
assertThat(result).isEmpty();
}
use of com.github.robozonky.api.strategies.PortfolioOverview in project robozonky by RoboZonky.
the class NaturalLanguagePurchaseStrategyTest method recommendationIsMade.
@Test
void recommendationIsMade() {
final DefaultValues v = new DefaultValues(DefaultPortfolio.PROGRESSIVE);
final ParsedStrategy ps = new ParsedStrategy(v, Collections.emptyList(), Collections.emptyMap(), new FilterSupplier(v, null, Collections.emptySet()));
final PurchaseStrategy s = new NaturalLanguagePurchaseStrategy(ps);
final PortfolioOverview portfolio = mock(PortfolioOverview.class);
when(portfolio.getCzkAvailable()).thenReturn(ps.getMinimumBalance());
when(portfolio.getCzkInvested()).thenReturn(ps.getMaximumInvestmentSizeInCzk() - 1);
when(portfolio.getShareOnInvestment(any())).thenReturn(BigDecimal.ZERO);
final Participation p = spy(mockParticipation());
// not recommended due to balance
doReturn(BigDecimal.valueOf(100000)).when(p).getRemainingPrincipal();
doReturn(Rating.A).when(p).getRating();
final Participation p2 = spy(mockParticipation());
// check amounts under Zonky investment minimum
final int amount = Defaults.MINIMUM_INVESTMENT_IN_CZK - 1;
doReturn(BigDecimal.valueOf(amount)).when(p2).getRemainingPrincipal();
doReturn(Rating.A).when(p2).getRating();
final ParticipationDescriptor pd = mockDescriptor(p2);
final List<RecommendedParticipation> result = s.recommend(Arrays.asList(mockDescriptor(p), pd), portfolio, new Restrictions()).collect(Collectors.toList());
assertThat(result).hasSize(1);
final RecommendedParticipation r = result.get(0);
assertSoftly(softly -> {
softly.assertThat(r.descriptor()).isEqualTo(pd);
softly.assertThat(r.amount()).isEqualTo(pd.item().getRemainingPrincipal());
});
}
use of com.github.robozonky.api.strategies.PortfolioOverview in project robozonky by RoboZonky.
the class NaturalLanguagePurchaseStrategyTest method unacceptablePortfolioDueToOverInvestment.
@Test
void unacceptablePortfolioDueToOverInvestment() {
final DefaultValues v = new DefaultValues(DefaultPortfolio.EMPTY);
v.setTargetPortfolioSize(1000);
final ParsedStrategy p = new ParsedStrategy(v);
final PurchaseStrategy s = new NaturalLanguagePurchaseStrategy(p);
final PortfolioOverview portfolio = mock(PortfolioOverview.class);
when(portfolio.getCzkAvailable()).thenReturn(p.getMinimumBalance());
when(portfolio.getCzkInvested()).thenReturn(p.getMaximumInvestmentSizeInCzk());
final Stream<RecommendedParticipation> result = s.recommend(Collections.singletonList(mockDescriptor()), portfolio, new Restrictions());
assertThat(result).isEmpty();
}
use of com.github.robozonky.api.strategies.PortfolioOverview in project robozonky by RoboZonky.
the class EmailingListenerTest method mockPortfolio.
private static PortfolioOverview mockPortfolio(final int balance) {
final PortfolioOverview portfolioOverview = mock(PortfolioOverview.class);
when(portfolioOverview.getCzkAvailable()).thenReturn(balance);
when(portfolioOverview.getCzkAtRisk()).thenReturn(0);
when(portfolioOverview.getCzkAtRisk(any())).thenReturn(0);
when(portfolioOverview.getShareOnInvestment(any())).thenReturn(BigDecimal.ZERO);
when(portfolioOverview.getAtRiskShareOnInvestment(any())).thenReturn(BigDecimal.ZERO);
return portfolioOverview;
}
use of com.github.robozonky.api.strategies.PortfolioOverview in project robozonky by RoboZonky.
the class LoanRepaidEventListener method getData.
@Override
protected Map<String, Object> getData(final LoanRepaidEvent event) {
final PortfolioOverview p = event.getPortfolioOverview();
final Map<String, Object> result = super.getData(event);
result.put("yield", FinancialCalculator.actualInterestAfterFees(event.getInvestment(), p));
return result;
}
Aggregations