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); }
@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); }); }