public void Update__ValidRequest_ShouldRedirectIndex() { //Arrange var expectedResult = new ServiceResult(true); _mockService.Setup(m => m.CreateAvailability(It.IsAny <UserAvailability>())) .Returns(expectedResult); var viewModel = new AvailabilityFormViewModel() { StartTime = new TimeSpan(15, 50, 0), EndTime = new TimeSpan(16, 50, 0), Date = DateTime.Now.ToString("dd/MM/yyyy") }; //Act var result = _controller.Create(viewModel) as RedirectToRouteResult; //Assert result.Should().NotBeNull(); result.RouteValues.Should().HaveCount(1); var routeValue = result.RouteValues["action"]; routeValue.Should().Be("Index"); }
public static void AvailabilityDivision(AvailabilityFormViewModel availabilityModel, Availability availability) { using (CozySmartContext _db = new CozySmartContext()) { var firstPart = new Availability() { AvailabilityStart = availability.AvailabilityStart, AvailabilityEnd = availabilityModel.OccupationStart, AccommodationId = availabilityModel.AccommodationId }; var secondPart = new Availability() { AvailabilityStart = availabilityModel.OccupationEnd, AvailabilityEnd = availability.AvailabilityEnd, AccommodationId = availabilityModel.AccommodationId }; var currentAccommodation = _db.Accommodations.Include(a => a.Availabilities).Where(a => a.Id == availabilityModel.AccommodationId).Single(); var pastAvailability = _db.Availabilities.Find(availability.Id); _db.Availabilities.Remove(pastAvailability); currentAccommodation.Availabilities.Add(firstPart); currentAccommodation.Availabilities.Add(secondPart); _db.SaveChanges(); } }
public void Update__ServiceFailuare_ServiceErrorAddedToModel() { //Arrange var expectedResult = new ServiceResult(false, "error message"); _mockService.Setup(m => m.CreateAvailability(It.IsAny <UserAvailability>())) .Returns(expectedResult); var viewModel = new AvailabilityFormViewModel() { StartTime = new TimeSpan(15, 50, 0), EndTime = new TimeSpan(16, 50, 0), Date = DateTime.Now.ToString("dd/MM/yyyy") }; //Act var result = _controller.Create(viewModel) as ViewResult; //Assert result.Should().NotBeNull(); var serviceError = _controller.ModelState["User Availability"]; serviceError.Errors.Should().HaveCount(1); serviceError.Errors[0].ErrorMessage.Should().Be(expectedResult.ErrorMessage); }
public ActionResult New(int id) { var viewModel = new AvailabilityFormViewModel(); viewModel.AccommodationId = id; return(View("AvailabilityForm", viewModel)); }
public void TestInitialize() { _validator = new AvailabilityFormValidator(); _viewModel = new AvailabilityFormViewModel() { StartTime = new TimeSpan(15, 50, 0), EndTime = new TimeSpan(16, 50, 0), Date = DateTime.Now.ToString("dd/MM/yyyy") }; }
public void Create__InvalidModel_ShouldReloadPageWithErrors() { //Arrange var viewModel = new AvailabilityFormViewModel(); _controller.ModelState.AddModelError("test", "test"); //Act var result = _controller.Create(viewModel) as ViewResult; //Assert result.Should().NotBeNull(); result.ViewName.Should().Be("AvailabilityForm"); result.Model.Should().BeOfType <AvailabilityFormViewModel>(); _controller.ModelState.IsValid.Should().Be(false); }
public ActionResult Update(AvailabilityFormViewModel viewModel) { if (ModelState.IsValid) { var availability = Mapper.Map <UserAvailability>(viewModel); availability.UserId = User.Identity.GetUserId(); var result = _userAvailabilityService.UpdateAvailability(availability); if (result.Succeeded) { return(RedirectToAction("Index")); } ModelState.AddModelError("User Availability", result.ErrorMessage); } return(View("AvailabilityForm", viewModel)); }
public ActionResult Add(AvailabilityFormViewModel availabilityModel) { if (!ModelState.IsValid) { return(View("AvailabilityForm", availabilityModel)); } var accommodationAvailability = _db.Availabilities.Where(a => a.AccommodationId == availabilityModel.AccommodationId).ToList(); var accommodationBookings = _db.Bookings.Where(b => b.AccommodationId == availabilityModel.AccommodationId).ToList(); foreach (var booking in accommodationBookings) { if (availabilityModel.OccupationStart <= booking.Departure && availabilityModel.OccupationEnd >= booking.Arrival) { return(View()); } } foreach (var availability in accommodationAvailability) { if (availabilityModel.OccupationStart > availability.AvailabilityStart && availabilityModel.OccupationEnd < availability.AvailabilityEnd) { AvailabilityManager.AvailabilityDivision(availabilityModel, availability); break; } else { return(View()); } } return(RedirectToAction("Index", "Availability")); }