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);
        }
Example #2
0
        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);
        }