public void GivenAHandleAction_WhenThereAreAPendingReservation_AndTheUserRespondsYesOrNo_ThenRespondWithReservationStatus(
string smsRequestBody, string expectedMessage)
{
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))
.ReturnsAsync(new Reservation());
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", smsRequestBody))
.ShouldReturnTwiMLResult(data =>
{
StringAssert.Contains(expectedMessage, data.XPathSelectElement("Response/Message").Value);
});
}