@Override public String toString() { return "Wrapper for loan #" + participation.getLoanId() + ", participation #" + participation.getId(); } }
@Override public String toString() { return "Wrapper for loan #" + participation.getLoanId() + ", participation #" + participation.getId(); } }
@Override public long identify(final ParticipationDescriptor descriptor) { return descriptor.item().getId(); }
@Override public long identify(final ParticipationDescriptor descriptor) { return descriptor.item().getId(); }
PurchasingSession(final Collection<ParticipationDescriptor> marketplace, final PowerTenant tenant) { this.tenant = tenant; this.discarded = new SessionState<>(tenant, marketplace, d -> d.item().getId(), "discardedParticipations"); this.stillAvailable = new ArrayList<>(marketplace); }
PurchasingSession(final Collection<ParticipationDescriptor> marketplace, final PowerTenant tenant) { this.tenant = tenant; this.discarded = new SessionState<>(tenant, marketplace, d -> d.item().getId(), "discardedParticipations"); this.stillAvailable = new ArrayList<>(marketplace); }
boolean sizeMatchesStrategy(final Participation participation, final BigDecimal balance) { final int id = participation.getLoanId(); final long participationId = participation.getId(); final int[] recommended = getRecommendationBoundaries(participation); final int minimumRecommendation = recommended[0]; final int maximumRecommendation = recommended[1]; Decisions.report(logger -> logger.trace("Loan #{} (participation #{}) recommended range <{}; {}> CZK.", id, participationId, minimumRecommendation, maximumRecommendation)); // round to nearest lower increment final double price = participation.getRemainingPrincipal().doubleValue(); if (balance.doubleValue() < price) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; over balance.", id, participationId)); } else if (minimumRecommendation > price) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; below minimum.", id, participationId)); } else if (price > maximumRecommendation) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; over maximum.", id, participationId)); } else { Decisions.report(logger -> logger.debug("Final recommendation: buy loan #{} (participation #{}).", id, participationId)); return true; } return false; }
boolean sizeMatchesStrategy(final Participation participation, final BigDecimal balance) { final int id = participation.getLoanId(); final long participationId = participation.getId(); final int[] recommended = getRecommendationBoundaries(participation); final int minimumRecommendation = recommended[0]; final int maximumRecommendation = recommended[1]; Decisions.report(logger -> logger.trace("Loan #{} (participation #{}) recommended range <{}; {}> CZK.", id, participationId, minimumRecommendation, maximumRecommendation)); // round to nearest lower increment final double price = participation.getRemainingPrincipal().doubleValue(); if (balance.doubleValue() < price) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; over balance.", id, participationId)); } else if (minimumRecommendation > price) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; below minimum.", id, participationId)); } else if (price > maximumRecommendation) { Decisions.report(logger -> logger.debug("Loan #{} (participation #{}) not recommended; over maximum.", id, participationId)); } else { Decisions.report(logger -> logger.debug("Final recommendation: buy loan #{} (participation #{}).", id, participationId)); return true; } return false; }
@Test void purchase() { final ControlApi control = mock(ControlApi.class); final Api<ControlApi> ca = mockApi(control); final Zonky z = mockZonkyControl(ca); final Participation p = mock(Participation.class); when(p.getRemainingPrincipal()).thenReturn(BigDecimal.TEN); when(p.getId()).thenReturn(1L); z.purchase(p); verify(control).purchase(eq(p.getId()), any()); }
@Test void getters() { final PurchasingOperationDescriptor d = new PurchasingOperationDescriptor(); final Participation p = mock(Participation.class); when(p.getId()).thenReturn(1l); final Loan l = Loan.custom().build(); final ParticipationDescriptor pd = new ParticipationDescriptor(p, () -> l); assertThat(d.identify(pd)).isEqualTo(1); }