@Test
void recommendationIsMade() {

    final ParsedStrategy p = new ParsedStrategy(DefaultPortfolio.PROGRESSIVE, Collections.emptySet());
    final ReservationStrategy s = new NaturalLanguageReservationStrategy(p);
    final PortfolioOverview portfolio = mock(PortfolioOverview.class);
    when(portfolio.getInvested()).thenReturn(p.getMaximumInvestmentSize()
        .subtract(1));
    when(portfolio.getShareOnInvestment(any())).thenReturn(Ratio.ZERO);
    final Reservation l = mockReservation(200);
    final ReservationDescriptor ld = new ReservationDescriptor(l, () -> null);
    final List<RecommendedReservation> result = s
        .recommend(Collections.singleton(ld), portfolio, mockSessionInfo())
        .collect(Collectors.toList());
    assertThat(result).hasSize(1);
    final RecommendedReservation r = result.get(0);
    assertSoftly(softly -> {
        softly.assertThat(r.descriptor())
            .isEqualTo(ld);
        softly.assertThat(r.amount())
            .isEqualTo(Money.from(200));
    });
}