public async Task TripController_Search_WhenTripsFound_ShouldReturnOk() { // Arrange var tripReference = StringHelper.RandomString(8); _mockTripRepository .Setup(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference)) .Verifiable(); // Act var tripController = new TripController(_mockTripRepository.Object, _mockVehicleRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await tripController.Search("CityA", "CityB", DateTime.Now.ToString("MM-dd-yyyy")); var objResult = result as OkObjectResult; // Assert Assert.IsNotNull(objResult); var tripResponse = objResult.Value as TripResponseModel; Assert.IsNotNull(tripResponse); Assert.IsTrue(tripResponse.Trips.Count() > 0); Assert.AreEqual(tripReference, tripResponse.Trips.FirstOrDefault().TripReference); Assert.AreEqual(TripStatus.Scheduled, tripResponse.Trips.FirstOrDefault().TripStatus.ToEnum <TripStatus>()); _mockTripRepository.Verify(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public async Task CanSearchTrip() { // Arrange - create the mock repository TestTrekStoriesContext tc = new TestTrekStoriesContext(); Trip trip1 = new Trip { Title = "Trip 1", StartDate = new DateTime(2015, 4, 12), TripOwner = "ABC123", TripCategory = TripCategory.architecture }; Trip trip2 = new Trip { Title = "Trip 2", StartDate = new DateTime(2015, 4, 13), TripOwner = "ABC123", TripCategory = TripCategory.forest }; Trip trip3 = new Trip { Title = "Another Title", StartDate = new DateTime(2015, 4, 16), TripOwner = "ABC123" }; Trip trip4 = new Trip { Title = "Trip 4", StartDate = new DateTime(2018, 4, 16), TripOwner = "AnotherUser", TripCategory = TripCategory.architecture }; tc.Trips.Add(trip1); tc.Trips.Add(trip2); tc.Trips.Add(trip3); tc.Trips.Add(trip4); // Arrange - create a controller var controller = new TripController(tc); // Action TripSearchModel searchModel = new TripSearchModel { TripCategory = TripCategory.architecture, TitleKeyword = "Trip" }; var viewResult = await controller.Search(searchModel) as ViewResult; List <Trip> result = (List <Trip>)viewResult.ViewData.Model; // Assert - ordered descending + only show trips from ABC123 Assert.AreEqual(2, result.Count); CollectionAssert.Contains(result, trip1); CollectionAssert.Contains(result, trip4); }
public async Task TripController_Search_ForInvalidDate_ShouldReturnBadRequest() { // Arrange var tripReference = StringHelper.RandomString(8); _mockTripRepository .Setup(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference)) .Verifiable(); // Act var tripController = new TripController(_mockTripRepository.Object, _mockVehicleRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await tripController.Search("CityA", "CityB", DateTime.Now.ToString("MMddyyyy")); // Assert Assert.IsNotNull(result as BadRequestObjectResult); _mockTripRepository.Verify(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }
public async Task TripController_Search_WhenTripsNotFound_ShouldReturnNotFound() { // Arrange var tripReference = StringHelper.RandomString(8); _mockTripRepository .Setup(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(default(IEnumerable <Trip>)) .Verifiable(); // Act var tripController = new TripController(_mockTripRepository.Object, _mockVehicleRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await tripController.Search("CityA", "CityB", DateTime.Now.ToString("MM-dd-yyyy")); // Assert Assert.IsNotNull(result as NotFoundResult); _mockTripRepository.Verify(m => m.GetByTripDetailsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }