@Test
void successful() {

    final int amountToInvest = 200;
    final RecommendedLoan r = mockLoanDescriptor().recommend(Money.from(amountToInvest))
        .get();
    final Zonky z = harmlessZonky();
    final PowerTenant auth = mockTenant(z);
    final InvestingSession t = new InvestingSession(Collections.emptySet(), auth);
    final boolean result = t.accept(r);
    assertSoftly(softly -> {
        softly.assertThat(result)
            .isTrue();
        softly.assertThat(t.getAvailable())
            .doesNotContain(r.descriptor());
    });
    final List<Loan> investments = t.getResult();
    assertThat(investments).hasSize(1);
    // validate event sequence
    final List<Event> newEvents = getEventsRequested();
    assertThat(newEvents)
        .hasSize(1)
        .first()
        .isInstanceOf(InvestmentMadeEvent.class);
    verify(auth).setKnownBalanceUpperBound(eq(Money.from(Integer.MAX_VALUE - 200)));
}