@Test
void recommend() {

    final BigDecimal remainingPrincipal = BigDecimal.TEN;
    final Investment i = mockInvestment(remainingPrincipal);
    final InvestmentDescriptor id = new InvestmentDescriptor(i, () -> LOAN);
    assertThat(id.item()).isSameAs(i);
    final Optional<RecommendedInvestment> r = id.recommend();
    assertThat(r).isPresent();
    assertSoftly(softly -> {
        softly.assertThat(r.get()
            .amount())
            .isEqualTo(Money.from(remainingPrincipal));
        softly.assertThat(r.get()
            .descriptor())
            .isEqualTo(id);
        softly.assertThat(r.get()
            .descriptor()
            .related())
            .isSameAs(LOAN);
    });
}