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");
        }
Пример #2
0
        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));
        }
Пример #5
0
        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);
        }
Пример #7
0
        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"));
        }