public async Task TripController_GetTripDetails_ShouldReturnMatchingTrip()
        {
            // Arrange
            var tripReference = StringHelper.RandomString(8);

            _mockTripRepository
            .Setup(m => m.GetByTripReferenceAsync(It.IsAny <string>()))
            .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference).FirstOrDefault())
            .Verifiable();

            // Act
            var tripController = new TripController(_mockTripRepository.Object, _mockVehicleRepository.Object, _mockBookingRepository.Object, _mockLogger.Object);
            var result         = await tripController.GetTripDetails(tripReference);

            var objResult = result as OkObjectResult;

            // Assert
            Assert.IsNotNull(objResult);
            var tripResponse = objResult.Value as TripResponseModel;

            Assert.IsNotNull(tripResponse);
            Assert.AreEqual(1, tripResponse.Trips.Count());
            Assert.AreEqual(tripReference, tripResponse.Trips.FirstOrDefault().TripReference);
            Assert.AreEqual(TripStatus.Scheduled, tripResponse.Trips.FirstOrDefault().TripStatus.ToEnum <TripStatus>());
            _mockTripRepository.Verify(m => m.GetByTripReferenceAsync(It.IsAny <string>()), Times.AtLeastOnce);
        }