use of com.github.robozonky.api.strategies.LoanDescriptor in project robozonky by RoboZonky.
the class JmxListenerServiceTest method getParametersForInvestmentRejected.
private DynamicTest getParametersForInvestmentRejected() {
final Loan l = mockLoan();
final LoanDescriptor ld = new LoanDescriptor(l);
final RecommendedLoan r = ld.recommend(200).get();
final Event evt = new InvestmentRejectedEvent(r, "");
final Consumer<SoftAssertions> before = (softly) -> {
final OperationsMBean mbean = getOperationsMBean();
softly.assertThat(mbean.getRejectedInvestments()).isEmpty();
};
final Consumer<SoftAssertions> after = (softly) -> {
final OperationsMBean mbean = getOperationsMBean();
softly.assertThat(mbean.getRejectedInvestments()).containsOnlyKeys(l.getId());
softly.assertThat(mbean.getLatestUpdatedDateTime()).isEqualTo(evt.getCreatedOn());
};
return getParameters(evt, before, after);
}
use of com.github.robozonky.api.strategies.LoanDescriptor in project robozonky by RoboZonky.
the class JmxListenerServiceTest method getParametersForInvestmentDelegated.
private DynamicTest getParametersForInvestmentDelegated() {
final Loan l = mockLoan();
final LoanDescriptor ld = new LoanDescriptor(l);
final RecommendedLoan r = ld.recommend(200).get();
final Event evt = new InvestmentDelegatedEvent(r, "");
final Consumer<SoftAssertions> before = (softly) -> {
final OperationsMBean mbean = getOperationsMBean();
softly.assertThat(mbean.getDelegatedInvestments()).isEmpty();
};
final Consumer<SoftAssertions> after = (softly) -> {
final OperationsMBean mbean = getOperationsMBean();
softly.assertThat(mbean.getDelegatedInvestments()).containsOnlyKeys(l.getId());
softly.assertThat(mbean.getLatestUpdatedDateTime()).isEqualTo(evt.getCreatedOn());
};
return getParameters(evt, before, after);
}
use of com.github.robozonky.api.strategies.LoanDescriptor in project robozonky by RoboZonky.
the class InvestingTest method noneAccepted.
@Test
void noneAccepted() {
// new ID every time to avoid caches
final int loanId = (int) (Math.random() * 1000);
final Loan loan = Loan.custom().setId(loanId).setAmount(100_000).setRating(Rating.D).setMyInvestment(mockMyInvestment()).setDatePublished(OffsetDateTime.now()).build();
final LoanDescriptor ld = new LoanDescriptor(loan);
final Investor.Builder builder = new Investor.Builder().asDryRun();
final Zonky z = harmlessZonky(9000);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
when(z.getLoan(eq(loanId))).thenReturn(loan);
final Authenticated auth = mockAuthentication(z);
final Investing exec = new Investing(builder, NONE_ACCEPTING, auth);
assertThat(exec.apply(portfolio, Collections.singleton(ld))).isEmpty();
}
use of com.github.robozonky.api.strategies.LoanDescriptor in project robozonky by RoboZonky.
the class InvestingTest method noStrategy.
@Test
void noStrategy() {
// new ID every time to avoid caches
final int loanId = (int) (Math.random() * 1000);
final Loan loan = Loan.custom().setId(loanId).setAmount(2).build();
final LoanDescriptor ld = new LoanDescriptor(loan);
final Investing exec = new Investing(null, Optional::empty, null);
final Zonky z = AbstractZonkyLeveragingTest.harmlessZonky(1000);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
assertThat(exec.apply(portfolio, Collections.singletonList(ld))).isEmpty();
// check events
final List<Event> events = this.getNewEvents();
assertThat(events).isEmpty();
}
use of com.github.robozonky.api.strategies.LoanDescriptor in project robozonky by RoboZonky.
the class InvestingTest method someAccepted.
@Test
void someAccepted() {
// new ID every time to avoid caches
final int loanId = (int) (Math.random() * 1000);
final Loan loan = Loan.custom().setId(loanId).setAmount(100_000).setRating(Rating.D).setRemainingInvestment(20_000).setDatePublished(OffsetDateTime.now()).build();
final LoanDescriptor ld = new LoanDescriptor(loan);
final Investor.Builder builder = new Investor.Builder().asDryRun();
final Zonky z = harmlessZonky(10_000);
when(z.getLoan(eq(loanId))).thenReturn(loan);
final Portfolio portfolio = Portfolio.create(z, mockBalance(z));
final Authenticated auth = mockAuthentication(z);
final Investing exec = new Investing(builder, ALL_ACCEPTING, auth);
final Collection<Investment> result = exec.apply(portfolio, Collections.singleton(ld));
// dry run
verify(z, never()).invest(any());
assertThat(result).extracting(Investment::getLoanId).isEqualTo(Collections.singletonList(loanId));
// re-check; no balance changed, no marketplace changed, nothing should happen
assertThat(exec.apply(portfolio, Collections.singleton(ld))).isEmpty();
}
Aggregations