public void PassCorrectTripInfo_ToTripService() { // Arrange var mockedTripService = new Mock <ITripService>(); var mockedTagService = new Mock <ITagService>(); var mockedCarService = new Mock <ICarService>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var controller = new TripController( mockedTripService.Object, mockedTagService.Object, mockedCarService.Object, mockedMappingProvider.Object); string loggedUserId = "LoggedusrId"; controller.GetLoggedUserId = () => loggedUserId; var viewModel = new CreateTripViewModel() { HourOfDeparture = "12:14" }; var tripCreationInfo = new TripCreationInfo(); mockedMappingProvider.Setup(x => x.Map <CreateTripViewModel, TripCreationInfo>(viewModel)) .Returns(tripCreationInfo); // Act and Assert controller.WithCallTo(x => x.Create(viewModel)) .ShouldRedirectTo(x => x.Create()); mockedTripService.Verify(x => x.CreateTrip(tripCreationInfo), Times.Once); }
public void NotCallCreateCityFromCityService_WhenOriginAndDestinationNamesExistInDB() { // Arrange var mockedTripRepo = new Mock <IProjectableRepositoryEf <Trip> >(); var mockedUserTripRepo = new Mock <IProjectableRepositoryEf <UsersTrips> >(); var mockedCityService = new Mock <ICityService>(); var mockedTagService = new Mock <ITagService>(); var mockedDateTimpeProvider = new Mock <IDateTimeProvider>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var mockedUnitOfWork = new Mock <IUnitOfWorkEF>(); var tripService = new TripService( () => mockedUnitOfWork.Object, mockedUserTripRepo.Object, mockedCityService.Object, mockedMappingProvider.Object, mockedTagService.Object, mockedTripRepo.Object, mockedDateTimpeProvider.Object); var tripCreatingInfo = new TripCreationInfo() { OriginName = "Sofia", DestinationName = "Pazardzhik" }; City originCity = new City() { Name = tripCreatingInfo.OriginName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.DestinationName)) .Returns(originCity); City destinationCity = new City() { Name = tripCreatingInfo.DestinationName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName)) .Returns(destinationCity); mockedMappingProvider.Setup(x => x.Map <TripCreationInfo, Trip>(tripCreatingInfo)).Returns(new Trip()); // Act tripService.CreateTrip(tripCreatingInfo); // Assert mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.DestinationName), Times.Never); mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.OriginName), Times.Never); }
public void AtachOnlySelectedTagsToTheModel() { // Arrange var mockedTripService = new Mock <ITripService>(); var mockedTagService = new Mock <ITagService>(); var mockedCarService = new Mock <ICarService>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var controller = new TripController( mockedTripService.Object, mockedTagService.Object, mockedCarService.Object, mockedMappingProvider.Object); string loggedUserId = "LoggedusrId"; controller.GetLoggedUserId = () => loggedUserId; var viewModel = new CreateTripViewModel() { HourOfDeparture = "12:14", Tags = new List <TagViewModel>() { new TagViewModel() { Id = 1, IsSelected = true }, new TagViewModel() { Id = 2, IsSelected = false }, } }; var tripCreationInfo = new TripCreationInfo(); mockedMappingProvider.Setup(x => x.Map <CreateTripViewModel, TripCreationInfo>(viewModel)) .Returns(tripCreationInfo); // Act and Assert controller.WithCallTo(x => x.Create(viewModel)) .ShouldRedirectTo(x => x.Create()); mockedTripService.Verify(x => x.CreateTrip(tripCreationInfo), Times.Once); Assert.AreEqual(1, tripCreationInfo.TagIds.Count()); }
public void CreateTrip(TripCreationInfo tripInfo) { var origin = this.cityService.GetCityByName(tripInfo.OriginName); if (origin == null) { origin = this.cityService.CreateCity(tripInfo.OriginName); } var destination = this.cityService.GetCityByName(tripInfo.DestinationName); if (destination == null) { destination = this.cityService.CreateCity(tripInfo.DestinationName); } var tags = this.tagService.GetTagsByIds(tripInfo.TagIds) as ICollection <Tag>; using (var uow = base.UnitOfWork()) { var trip = this.mappingProvider.Map <TripCreationInfo, Trip>(tripInfo); trip.Tags = tags; trip.Origin = origin; trip.Destination = destination; trip.DateCreated = this.dateTimeProvider.Now; var userTrips = new UsersTrips() { Trip = trip, UserId = tripInfo.DriverId, UserTripStatusId = (int)UserTripStatusType.Owner }; trip.TripsUsers = new List <UsersTrips>() { userTrips }; this.tripRepo.Add(trip); uow.Commit(); } }
public void CallCreateNewCity_WhenOriginCityFromTheInputIsNotPresentInTheDb() { // Arrange var mockedTripRepo = new Mock <IProjectableRepositoryEf <Trip> >(); var mockedUserTripRepo = new Mock <IProjectableRepositoryEf <UsersTrips> >(); var mockedCityService = new Mock <ICityService>(); var mockedTagService = new Mock <ITagService>(); var mockedDateTimpeProvider = new Mock <IDateTimeProvider>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var mockedUnitOfWork = new Mock <IUnitOfWorkEF>(); var tripService = new TripService( () => mockedUnitOfWork.Object, mockedUserTripRepo.Object, mockedCityService.Object, mockedMappingProvider.Object, mockedTagService.Object, mockedTripRepo.Object, mockedDateTimpeProvider.Object); var tripCreatingInfo = new TripCreationInfo() { OriginName = "Sofia", DestinationName = "Pazardzhik" }; City city = null; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName)) .Returns(city); mockedMappingProvider.Setup(x => x.Map <TripCreationInfo, Trip>(tripCreatingInfo)).Returns(new Trip()); // Act tripService.CreateTrip(tripCreatingInfo); // Assert mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.OriginName), Times.Once); }
public void CreateTripWithAllPropertiesFromMethodParameter() { // Arrange var mockedTripRepo = new Mock <IProjectableRepositoryEf <Trip> >(); var mockedUserTripRepo = new Mock <IProjectableRepositoryEf <UsersTrips> >(); var mockedCityService = new Mock <ICityService>(); var mockedTagService = new Mock <ITagService>(); var mockedDateTimpeProvider = new Mock <IDateTimeProvider>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var mockedUnitOfWork = new Mock <IUnitOfWorkEF>(); var tripService = new TripService( () => mockedUnitOfWork.Object, mockedUserTripRepo.Object, mockedCityService.Object, mockedMappingProvider.Object, mockedTagService.Object, mockedTripRepo.Object, mockedDateTimpeProvider.Object); var tripCreatingInfo = new TripCreationInfo() { OriginName = "Sofia", DestinationName = "Pazardzhik", TagIds = new List <int>(), Description = "test", Price = 4, CarId = 1, TotalSeats = 2, TimeOfDeparture = DateTime.Now, DriverId = "1" }; City originCity = new City() { Name = tripCreatingInfo.OriginName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.DestinationName)) .Returns(originCity); City destinationCity = new City() { Name = tripCreatingInfo.DestinationName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName)) .Returns(destinationCity); var foundTags = new List <Tag>(); mockedTagService.Setup(x => x.GetTagsByIds(tripCreatingInfo.TagIds)).Returns(foundTags); var dateCreated = DateTime.Now; mockedDateTimpeProvider.Setup(x => x.Now).Returns(dateCreated); var trip = new Trip() { Tags = foundTags, Origin = originCity, Destination = destinationCity, CarId = tripCreatingInfo.CarId, Price = tripCreatingInfo.Price, TotalSeats = tripCreatingInfo.TotalSeats, TimeOfDeparture = tripCreatingInfo.TimeOfDeparture, TakenSeats = 0, Description = tripCreatingInfo.Description, IsDeleted = false, IsReported = false, IsFinished = false, DateCreated = DateTime.UtcNow, }; mockedMappingProvider.Setup(x => x.Map <TripCreationInfo, Trip>(tripCreatingInfo)) .Returns(trip); // Act tripService.CreateTrip(tripCreatingInfo); var createdTripUserTrips = trip.TripsUsers.FirstOrDefault(x => x.Trip == trip); // Assert Assert.AreEqual(createdTripUserTrips.UserTripStatusId, (int)UserTripStatusType.Owner); Assert.AreEqual(createdTripUserTrips.UserId, tripCreatingInfo.DriverId); Assert.AreEqual(createdTripUserTrips.Trip, trip); Assert.AreEqual(tripCreatingInfo.CarId, trip.CarId); Assert.AreEqual(tripCreatingInfo.Price, trip.Price); Assert.AreEqual(0, trip.TakenSeats); Assert.AreEqual(tripCreatingInfo.TotalSeats, trip.TotalSeats); Assert.AreEqual(tripCreatingInfo.TimeOfDeparture, trip.TimeOfDeparture); Assert.AreEqual(dateCreated, trip.DateCreated); Assert.IsFalse(trip.IsDeleted); Assert.IsFalse(trip.IsFinished); Assert.IsFalse(trip.IsReported); mockedTripRepo.Verify(x => x.Add(trip), Times.Once); mockedUnitOfWork.Verify(x => x.Commit(), Times.Once); }
public void CreateTripWithoutTags_WhenThereAreNotagsProvider() { // Arrange var mockedTripRepo = new Mock <IProjectableRepositoryEf <Trip> >(); var mockedUserTripRepo = new Mock <IProjectableRepositoryEf <UsersTrips> >(); var mockedCityService = new Mock <ICityService>(); var mockedTagService = new Mock <ITagService>(); var mockedDateTimpeProvider = new Mock <IDateTimeProvider>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var mockedUnitOfWork = new Mock <IUnitOfWorkEF>(); var tripService = new TripService( () => mockedUnitOfWork.Object, mockedUserTripRepo.Object, mockedCityService.Object, mockedMappingProvider.Object, mockedTagService.Object, mockedTripRepo.Object, mockedDateTimpeProvider.Object); var tripCreatingInfo = new TripCreationInfo() { OriginName = "Sofia", DestinationName = "Pazardzhik", TagIds = new List <int>() }; City originCity = new City() { Name = tripCreatingInfo.OriginName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.DestinationName)) .Returns(originCity); City destinationCity = new City() { Name = tripCreatingInfo.DestinationName }; mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName)) .Returns(destinationCity); var foundTags = new List <Tag>(); mockedTagService.Setup(x => x.GetTagsByIds(tripCreatingInfo.TagIds)).Returns(foundTags); var trip = new Trip() { Tags = foundTags }; mockedMappingProvider.Setup(x => x.Map <TripCreationInfo, Trip>(tripCreatingInfo)) .Returns(trip); // Act tripService.CreateTrip(tripCreatingInfo); // Assert mockedTripRepo.Verify(x => x.Add(trip), Times.Once); mockedUnitOfWork.Verify(x => x.Commit(), Times.Once); }