use of com.github.robozonky.app.portfolio.Portfolio in project robozonky by RoboZonky.
the class InvestingTest method noItems.
@Test
void noItems() {
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(1000);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
final Investor.Builder builder = new Investor.Builder().asDryRun();
final Authenticated auth = mockAuthentication(z);
final Investing exec = new Investing(builder, ALL_ACCEPTING, auth);
assertThat(exec.apply(portfolio, Collections.emptyList())).isEmpty();
}
use of com.github.robozonky.app.portfolio.Portfolio in project robozonky by RoboZonky.
the class SessionTest method investmentIgnoredWhenNoConfirmationProviderAndCaptcha.
@Test
void investmentIgnoredWhenNoConfirmationProviderAndCaptcha() {
final LoanDescriptor ld = AbstractZonkyLeveragingTest.mockLoanDescriptor();
final RecommendedLoan r = ld.recommend(200).get();
final Collection<LoanDescriptor> availableLoans = Collections.singletonList(ld);
// setup APIs
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(10_000);
final Authenticated auth = mockAuthentication(z);
final Investor p = mock(Investor.class);
doReturn(new ZonkyResponse(ZonkyResponseType.REJECTED)).when(p).invest(eq(r), anyBoolean());
doReturn(Optional.empty()).when(p).getConfirmationProviderId();
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
final Session t = new Session(portfolio, new LinkedHashSet<>(availableLoans), p, auth);
final boolean result = t.invest(r);
assertThat(result).isFalse();
// validate event
final List<Event> newEvents = this.getNewEvents();
assertThat(newEvents).hasSize(2);
assertSoftly(softly -> {
softly.assertThat(newEvents.get(0)).isInstanceOf(InvestmentRequestedEvent.class);
softly.assertThat(newEvents.get(1)).isInstanceOf(InvestmentSkippedEvent.class);
});
}
use of com.github.robozonky.app.portfolio.Portfolio in project robozonky by RoboZonky.
the class SessionTest method underBalance.
@Test
void underBalance() {
// setup APIs
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(Defaults.MINIMUM_INVESTMENT_IN_CZK - 1);
final Authenticated auth = mockAuthentication(z);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
// run test
final Session it = new Session(portfolio, Collections.emptySet(), getInvestor(auth), auth);
final Optional<RecommendedLoan> recommendation = AbstractZonkyLeveragingTest.mockLoanDescriptor().recommend(BigDecimal.valueOf(Defaults.MINIMUM_INVESTMENT_IN_CZK));
final boolean result = it.invest(recommendation.get());
// verify result
assertThat(result).isFalse();
final List<Event> newEvents = this.getNewEvents();
assertThat(newEvents).isEmpty();
}
use of com.github.robozonky.app.portfolio.Portfolio in project robozonky by RoboZonky.
the class SessionTest method constructor.
@Test
void constructor() {
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(10_000);
final Authenticated auth = mockAuthentication(z);
final LoanDescriptor ld = AbstractZonkyLeveragingTest.mockLoanDescriptor();
final Collection<LoanDescriptor> lds = Collections.singleton(ld);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
final Session it = new Session(portfolio, new LinkedHashSet<>(lds), getInvestor(auth), auth);
assertSoftly(softly -> {
softly.assertThat(it.getAvailable()).isNotSameAs(lds).containsExactly(ld);
softly.assertThat(it.getResult()).isEmpty();
});
}
use of com.github.robozonky.app.portfolio.Portfolio in project robozonky by RoboZonky.
the class SessionTest method investmentSuccessful.
@Test
void investmentSuccessful() {
final int oldBalance = 10_000;
final int amountToInvest = 200;
final RecommendedLoan r = AbstractZonkyLeveragingTest.mockLoanDescriptor().recommend(amountToInvest).get();
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(oldBalance);
when(z.getLoan(eq(r.descriptor().item().getId()))).thenReturn(r.descriptor().item());
final Authenticated auth = mockAuthentication(z);
final Investor p = mock(Investor.class);
doReturn(new ZonkyResponse(amountToInvest)).when(p).invest(eq(r), anyBoolean());
doReturn(Optional.of("something")).when(p).getConfirmationProviderId();
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
final Session t = new Session(portfolio, Collections.emptySet(), p, auth);
final boolean result = t.invest(r);
assertThat(result).isTrue();
final List<Investment> investments = t.getResult();
assertThat(investments).hasSize(1);
assertThat(investments.get(0).getOriginalPrincipal().intValue()).isEqualTo(amountToInvest);
// validate event sequence
final List<Event> newEvents = this.getNewEvents();
assertThat(newEvents).hasSize(2);
assertSoftly(softly -> {
softly.assertThat(newEvents.get(0)).isInstanceOf(InvestmentRequestedEvent.class);
softly.assertThat(newEvents.get(1)).isInstanceOf(InvestmentMadeEvent.class);
});
// validate event contents
final InvestmentMadeEvent e = (InvestmentMadeEvent) newEvents.get(1);
assertThat(e.getPortfolioOverview().getCzkAvailable()).isEqualTo(oldBalance - amountToInvest);
}
Aggregations