use of com.github.robozonky.api.strategies.PurchaseStrategy in project robozonky by RoboZonky.
the class NaturalLanguagePurchaseStrategyTest method nothingRecommendedDueToRatingOverinvested.
@Test
void nothingRecommendedDueToRatingOverinvested() {
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());
when(portfolio.getCzkInvested()).thenReturn(p.getMaximumInvestmentSizeInCzk() - 1);
when(portfolio.getShareOnInvestment(any())).thenReturn(BigDecimal.ZERO);
final Participation l = mockParticipation();
doReturn(Rating.A).when(l).getRating();
final Stream<RecommendedParticipation> result = s.recommend(Collections.singletonList(mockDescriptor(l)), portfolio, new Restrictions());
assertThat(result).isEmpty();
}
use of com.github.robozonky.api.strategies.PurchaseStrategy 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.PurchaseStrategy 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.PurchaseStrategy 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.PurchaseStrategy in project robozonky by RoboZonky.
the class StrategyLoaderTest method loading.
@Test
void loading() {
final InvestmentStrategy is = (availableLoans, portfolio, restrictions) -> Stream.empty();
final StrategyService iss = new StrategyService() {
@Override
public Optional<InvestmentStrategy> toInvest(final String strategy) {
return Optional.of(is);
}
@Override
public Optional<SellStrategy> toSell(final String strategy) {
return Optional.empty();
}
@Override
public Optional<PurchaseStrategy> toPurchase(final String strategy) {
return Optional.empty();
}
};
assertThat(StrategyLoader.load("", Collections.singleton(iss), StrategyService::toInvest)).contains(is);
}
Aggregations