@Override public Optional<RecommendedInvestment> recommend(final BigDecimal amount) { if (Objects.equals(amount, getRemainingPrincipal())) { return Optional.of(new RecommendedInvestment(this, amount)); } else { return Optional.empty(); } }
@Test void recommend() { final BigDecimal remainingPrincipal = BigDecimal.TEN; final Investment i = mockInvestment(remainingPrincipal); final InvestmentDescriptor id = new InvestmentDescriptor(i, () -> LOAN); final Optional<RecommendedInvestment> r = id.recommend(); assertThat(r).isPresent(); assertSoftly(softly -> { softly.assertThat(r.get().amount()).isEqualTo(remainingPrincipal); softly.assertThat(r.get().descriptor()).isEqualTo(id); softly.assertThat(r.get().descriptor().related()).isSameAs(LOAN); }); }
private static Optional<Investment> processSale(final PowerTenant tenant, final RecommendedInvestment r, final SessionState<Investment> sold) { tenant.fire(EventFactory.saleRequested(r)); final Investment i = r.descriptor().item(); final boolean isRealRun = !tenant.getSessionInfo().isDryRun(); LOGGER.debug("Will send sell request for loan #{}: {}.", i.getLoanId(), isRealRun); if (isRealRun) { tenant.run(z -> z.sell(i)); LOGGER.info("Offered to sell investment in loan #{}.", i.getLoanId()); } sold.put(i); // make sure dry run never tries to sell this again in this instance tenant.fire(EventFactory.saleOffered(i, r.descriptor().related())); return Optional.of(i); }
private static Optional<Investment> processSale(final PowerTenant tenant, final RecommendedInvestment r, final SessionState<Investment> sold) { tenant.fire(EventFactory.saleRequested(r)); final Investment i = r.descriptor().item(); final boolean isRealRun = !tenant.getSessionInfo().isDryRun(); LOGGER.debug("Will send sell request for loan #{}: {}.", i.getLoanId(), isRealRun); if (isRealRun) { tenant.run(z -> z.sell(i)); LOGGER.info("Offered to sell investment in loan #{}.", i.getLoanId()); } sold.put(i); // make sure dry run never tries to sell this again in this instance tenant.fire(EventFactory.saleOffered(i, r.descriptor().related())); return Optional.of(i); }
@Override public Optional<RecommendedInvestment> recommend(final BigDecimal amount) { if (Objects.equals(amount, getRemainingPrincipal())) { return Optional.of(new RecommendedInvestment(this, amount)); } else { return Optional.empty(); } }
@Test void equals() { final BigDecimal remainingPrincipal = BigDecimal.TEN; final Investment i = mockInvestment(remainingPrincipal); final InvestmentDescriptor d = new InvestmentDescriptor(i, () -> LOAN); final RecommendedInvestment r = new RecommendedInvestment(d, remainingPrincipal); assertSoftly(softly -> { softly.assertThat(r).isNotEqualTo(null); softly.assertThat(r).isNotEqualTo(UUID.randomUUID().toString()); softly.assertThat(r).isEqualTo(r); }); final RecommendedInvestment r2 = new RecommendedInvestment(d, remainingPrincipal); assertSoftly(softly -> { softly.assertThat(r).isEqualTo(r2); softly.assertThat(r2).isEqualTo(r); }); final RecommendedInvestment r3 = new RecommendedInvestment(new InvestmentDescriptor(mockInvestment(remainingPrincipal), () -> LOAN), remainingPrincipal); assertThat(r).isNotEqualTo(r3); } }