public void GivenAHandleAction_WhenThereAreNoPendingReservations_TheResponseContainsSorryMessage()
{
var host = new ApplicationUser {Id = "user-id"};
var stubVacationPropertiesRepository = Mock.Of<IVacationPropertiesRepository>();
var mockUsersRepository = new Mock<IUsersRepository>();
var mockReservationsRepository = new Mock<IReservationsRepository>();
mockReservationsRepository
.Setup(r => r.FindFirstPendingReservationByHostAsync(host.Id))
.ThrowsAsync(new InvalidOperationException()); // There are no reservations
mockUsersRepository
.Setup(r => r.FindByPhoneNumberAsync(It.IsAny<string>()))
.ReturnsAsync(host);
var stubNotifier = Mock.Of<INotifier>();
var controller = new ReservationsController(
stubVacationPropertiesRepository,
mockReservationsRepository.Object,
mockUsersRepository.Object,
stubNotifier);
controller.WithCallTo(c => c.Handle("from-number", "yes"))
.ShouldReturnTwiMLResult(data =>
{
StringAssert.Contains("Sorry", data.XPathSelectElement("Response/Message").Value);
});
}