public void DeleteAccommodationOk()
        {
            Accommodation acc = new Accommodation()
            {
                Id            = 1,
                Name          = "Hotel Faro de La Paloma",
                Description   = "Cozy.",
                Address       = "Somewhere",
                FullCapacity  = true,
                Images        = new List <ImageWrapper>(),
                PricePerNight = 700,
                Rating        = 5,
                TouristSpot   = new TouristSpot()
            };


            var mock = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mock.Setup(ac => ac.Delete(acc.Name));
            var controller     = new AccommodationController(mock.Object);
            var result         = controller.Delete("Hotel Faro de La Paloma") as OkObjectResult;
            var expectedResult = new OkObjectResult("Success");

            mock.VerifyAll();
            Assert.AreEqual(result.Value, expectedResult.Value);
        }
Exemplo n.º 2
0
        public void TestGetAccommodationsInSpotOK()
        {
            Accommodation accommodation = new Accommodation
            {
                Id            = 5,
                Name          = "abm",
                SpotId        = 1,
                Address       = "a",
                ContactNumber = "a",
                Information   = "a",
                PricePerNight = 5.0
            };
            List <Accommodation> listAccommodations = new List <Accommodation>
            {
                accommodation
            };
            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.GetAvailableAccommodationBySpot(It.IsAny <int>())).Returns(listAccommodations);
            var controller = new AccommodationController(mockAccommodation.Object);

            var result = controller.GetAccommodationsInSpot(1) as OkObjectResult;

            mockAccommodation.VerifyAll();
            Assert.AreEqual(200, result.StatusCode);
        }
Exemplo n.º 3
0
        public void TestGet()
        {
            Accommodation accommodation = new Accommodation()
            {
                Id            = 5,
                Name          = "abm",
                SpotId        = 1,
                Address       = "a",
                ContactNumber = "a",
                Information   = "a",
                PricePerNight = 5.0,
                Full          = true
            };
            List <Accommodation> accommodations = new List <Accommodation>()
            {
                accommodation
            };
            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.GetAll()).Returns(accommodations);
            var controller = new AccommodationController(mockAccommodation.Object);

            var result = controller.Get() as OkObjectResult;

            mockAccommodation.VerifyAll();
            Assert.AreEqual(200, result.StatusCode);
        }
Exemplo n.º 4
0
        public async Task CannotEditAccommodationIfBeforeTripStartDate()
        {
            // Arrange - create mock repository
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            // Arrange - create an accommodation and a step linked to it
            Accommodation acc = new Accommodation {
                AccommodationId = 1, Name = "Hotel A", CheckIn = new DateTime(2018, 8, 10, 10, 0, 0), CheckOut = new DateTime(2018, 8, 11, 10, 0, 0)
            };

            tc.Accommodations.Add(acc);
            Trip trip = new Trip {
                TripId = 11, StartDate = new DateTime(2018, 8, 10), TripOwner = "ABC123"
            };
            Step step = new Step {
                StepId = 123, Trip = trip, AccommodationId = 1, SequenceNo = 1
            };

            tc.Steps.Add(step);

            // Arrange - create the controller with update accommodation data
            var controller = new AccommodationController(tc).WithIncomingValues(new FormCollection {
                { "AccommodationId", "1" }, { "Name", "Name Changed" }, { "CheckIn", "09-08-2018 10:00 AM" }, { "CheckOut", "11-08-2018 10:00 AM" }
            }).WithAuthenticatedUser("ABC123");

            // Act - try to save the accommodation
            var result = await controller.EditPost(1, null) as ViewResult;

            // Assert - check the method result type
            Assert.IsFalse(result.ViewData.ModelState.IsValid);
        }
Exemplo n.º 5
0
        public async Task CanEditAccommodation()
        {
            // Arrange - create the mock repository with accommodations
            TestTrekStoriesContext tc   = new TestTrekStoriesContext();
            Accommodation          acc1 = new Accommodation {
                AccommodationId = 1, Name = "Hotel A"
            };
            Accommodation acc2 = new Accommodation {
                AccommodationId = 2, Name = "Hotel B"
            };

            tc.Accommodations.Add(acc1);
            tc.Accommodations.Add(acc2);
            // Arrange - create the controller
            AccommodationController controller = new AccommodationController(tc);
            // Act
            var result1 = await controller.Edit(1) as ViewResult;

            var a1      = (Accommodation)result1.ViewData.Model;
            var result2 = await controller.Edit(2) as ViewResult;

            var a2 = (Accommodation)result2.ViewData.Model;

            // Assert
            Assert.AreEqual(1, a1.AccommodationId);
            Assert.AreEqual(2, a2.AccommodationId);
            Assert.AreEqual("Hotel A", a1.Name);
        }
Exemplo n.º 6
0
        public void TestAddReview()
        {
            Booking booking = new Booking()
            {
                HeadGuest = new Tourist
                {
                    Name     = "a",
                    LastName = "b"
                }
            };
            Review review = new Review()
            {
                BookingId = 1,
                Comment   = "ppp",
                Score     = 4,
                Booking   = booking
            };
            ReviewModelIn reviewModelIn = new ReviewModelIn()
            {
                BookingId = review.BookingId,
                Comment   = review.Comment,
                Score     = review.Score
            };
            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.AddReview(It.IsAny <Review>())).Returns(review);
            var controller = new AccommodationController(mockAccommodation.Object);

            var result = controller.CreateReview(reviewModelIn) as OkObjectResult;

            mockAccommodation.VerifyAll();
            Assert.AreEqual(200, result.StatusCode);
        }
Exemplo n.º 7
0
        public void TestGetAccommodationsByIdOK()
        {
            List <AccommodationImage> listAccommodations = new List <AccommodationImage>
            {
                new AccommodationImage()
                {
                    Image = "h"
                }
            };
            Accommodation accommodation = new Accommodation()
            {
                Id            = 5,
                Name          = "abm",
                SpotId        = 1,
                Address       = "a",
                ContactNumber = "a",
                Information   = "a",
                PricePerNight = 5.0,
                Images        = listAccommodations
            };

            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.GetById(It.IsAny <int>())).Returns(accommodation);
            mockAccommodation.Setup(p => p.GetReviewsByAccommodation(It.IsAny <int>())).Returns((0, new List <Review>()));
            var controller = new AccommodationController(mockAccommodation.Object);

            var result = controller.Get(5) as OkObjectResult;

            mockAccommodation.VerifyAll();
            Assert.AreEqual(200, result.StatusCode);
        }
Exemplo n.º 8
0
        public void TestUpdateCapaityOK()
        {
            Accommodation accommodation = new Accommodation
            {
                Id            = 5,
                Name          = "abm",
                SpotId        = 1,
                Address       = "a",
                ContactNumber = "a",
                Information   = "a",
                PricePerNight = 5.0,
                Full          = true
            };
            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.UpdateCapacity(It.IsAny <int>(), It.IsAny <bool>()));
            var controller = new AccommodationController(mockAccommodation.Object);

            controller.UpdateCapacity(5, new StatusModelIn()
            {
                Status = false
            });

            mockAccommodation.VerifyAll();
        }
Exemplo n.º 9
0
        public async Task CanDeleteAccommodationAndUpdateBudget()
        {
            // Arrange - create the mock repository
            TestTrekStoriesContext tc = new TestTrekStoriesContext();
            Trip trip = new Trip {
                TripId = 1, Title = "Trip Name", TotalCost = 120, TripOwner = "ABC123"
            };

            tc.Trips.Add(trip);
            tc.Steps.Add(new Step {
                StepId = 123, Trip = trip, AccommodationId = 2
            });
            Accommodation a2 = new Accommodation()
            {
                AccommodationId = 2, Name = "Test", Price = 70
            };

            tc.Accommodations.Add(a2);
            // Arrange - create the controller
            AccommodationController controller = new AccommodationController(tc).WithAuthenticatedUser("ABC123");
            // Act - delete an accommodation
            var result = await controller.DeleteConfirmed(2);

            // Assert - ensure that the accommodation is deleted from repository
            Assert.IsNull(tc.Accommodations.FirstOrDefault(a => a.AccommodationId == a2.AccommodationId));
            // Assert - ensure that the trip budget was updated
            Assert.AreEqual(trip.TotalCost, 50);
        }
Exemplo n.º 10
0
        public async Task CannotEditAccommodationIfOneAlreadyExistsForThoseDates()
        {
            // Arrange - create mock repository
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            // Arrange - create two accommodations linked to 2 different steps
            Accommodation acc1 = new Accommodation {
                AccommodationId = 1, Name = "Hotel A", CheckIn = new DateTime(2018, 8, 10, 12, 0, 0), CheckOut = new DateTime(2018, 8, 11, 10, 0, 0), Price = 0
            };
            Accommodation acc2 = new Accommodation {
                AccommodationId = 2, Name = "Hotel B", CheckIn = new DateTime(2018, 8, 11, 12, 0, 0), CheckOut = new DateTime(2018, 8, 12, 10, 0, 0), Price = 0
            };

            tc.Accommodations.Add(acc1);
            tc.Accommodations.Add(acc2);
            Trip trip = new Trip {
                TripId = 11, StartDate = new DateTime(2018, 8, 10), TripOwner = "ABC123", TotalCost = 0,
                Steps  = new List <Step>()
                {
                    new Step {
                        StepId = 123, TripId = 11, AccommodationId = 1, SequenceNo = 1, Trip = new Trip {
                            StartDate = new DateTime(2018, 8, 10)
                        }
                    },
                    new Step {
                        StepId = 124, TripId = 11, AccommodationId = 2, SequenceNo = 2, Trip = new Trip {
                            StartDate = new DateTime(2018, 8, 10)
                        }
                    }
                }
            };

            tc.Trips.Add(trip);
            Step step1 = new Step {
                StepId = 123, TripId = 11, Trip = trip, AccommodationId = 1, Accommodation = acc1, SequenceNo = 1
            };
            Step step2 = new Step {
                StepId = 124, TripId = 11, Trip = trip, AccommodationId = 2, Accommodation = acc2, SequenceNo = 2
            };

            tc.Steps.Add(step1);
            tc.Steps.Add(step2);


            // Arrange - create the controller with update accommodation data
            var controller = new AccommodationController(tc).WithIncomingValues(new FormCollection {
                { "AccommodationId", "1" }, { "Name", "Name Changed" }, { "CheckIn", "11-08-2018 10:00 AM" }, { "CheckOut", "12-08-2018 10:00 AM" }, { "Price", "0" }
            }).WithAuthenticatedUser("ABC123");

            // Act - try to save the activity
            var result = await controller.EditPost(1, null) as ViewResult;

            // Assert - check the method result type
            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.AreEqual("An accommodation already exists for Step 2", controller.ViewBag.ErrorMessage);
        }
Exemplo n.º 11
0
        public async Task CannotCreateAccommodationForStepsWhereAccommodationExists()
        {
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            //add step with accommodation
            Step step = new Step
            {
                StepId     = 11,
                TripId     = 1,
                SequenceNo = 1,
                Trip       = new Trip
                {
                    TripId       = 1,
                    Title        = "Test Trip",
                    Country      = "Ireland",
                    TripCategory = TripCategory.forest,
                    StartDate    = new DateTime(2018, 11, 28),
                    TotalCost    = 80,
                    TripOwner    = "ABC123"
                },
                AccommodationId = 12,
                Accommodation   = new Accommodation {
                    AccommodationId = 12, CheckIn = new DateTime(2018, 11, 28, 16, 0, 0)
                }
            };

            tc.Trips.Add(new Trip
            {
                TripId    = 1,
                TripOwner = "ABC123",
                StartDate = new DateTime(2018, 11, 28),
                TotalCost = 80,
                Steps     = new List <Step>()
                {
                    step
                }
            });
            tc.Steps.Add(step);

            AccommodationController controller = new AccommodationController(tc).WithAuthenticatedUser("ABC123");

            //try to add accommodation for that step with existing acommodation..
            Accommodation newAccommodation = new Accommodation()
            {
                CheckIn = new DateTime(2018, 11, 28, 14, 0, 0), CheckOut = new DateTime(2018, 11, 29, 10, 0, 0), Price = 80, ConfirmationFileUrl = "1"
            };

            var result = await controller.Create(newAccommodation);

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.AreEqual("An accommodation already exists for Step 1", controller.ViewBag.ErrorMessage);
        }
Exemplo n.º 12
0
        public async Task CannotCreateAccommodationWithInvalidCheckInOut()
        {
            AccommodationController controller       = new AccommodationController();
            Accommodation           newAccommodation = new Accommodation()
            {
                CheckIn = new DateTime(2018, 11, 29), CheckOut = new DateTime(2018, 11, 28, 10, 0, 0)
            };

            var result = await controller.Create(newAccommodation) as ViewResult;

            Assert.IsTrue(!controller.ModelState.IsValid);
            Assert.IsTrue(controller.ViewData.ModelState.Count == 1,
                          "Please check the check-in and check-out dates. Check-out cannot be before check-in.");
        }
Exemplo n.º 13
0
        public async Task CanCreateAccommodationAndUpdateTripBudget()
        {
            //Arrange
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            Step step = new Step {
                StepId = 11, TripId = 1, SequenceNo = 1,
                Trip   = new Trip
                {
                    TripId       = 1,
                    Title        = "Test Trip",
                    Country      = "Ireland",
                    TripCategory = TripCategory.forest,
                    StartDate    = new DateTime(2018, 11, 28),
                    TotalCost    = 80,
                    TripOwner    = "ABC123"
                }
            };

            tc.Trips.Add(new Trip
            {
                TripId    = 1,
                TripOwner = "ABC123",
                StartDate = new DateTime(2018, 11, 28),
                TotalCost = 80,
                Steps     = new List <Step>()
                {
                    step
                }
            });
            tc.Steps.Add(step);
            Accommodation newAccommodation = new Accommodation()
            {
                CheckIn = new DateTime(2018, 11, 28, 14, 0, 0), CheckOut = new DateTime(2018, 11, 29, 10, 0, 0), Price = 80, ConfirmationFileUrl = "1"
            };

            AccommodationController controller = new AccommodationController(tc).WithAuthenticatedUser("ABC123");
            // Act
            var result = await controller.Create(newAccommodation) as RedirectToRouteResult;

            Trip trip = tc.Trips.Find(1);

            // Assert
            Assert.AreEqual("Edit", result.RouteValues["action"]);
            Assert.AreEqual(160, trip.TotalCost);
        }
Exemplo n.º 14
0
        public async Task CannotEditNonexistentAccommodation()
        {
            // Arrange - create the mock repository
            TestTrekStoriesContext tc   = new TestTrekStoriesContext();
            Accommodation          acc1 = new Accommodation {
                AccommodationId = 1, Name = "Hotel A"
            };

            tc.Accommodations.Add(acc1);
            // Arrange - create the controller
            AccommodationController controller = new AccommodationController(tc);
            // Act
            var badResult = await controller.Edit(4) as ViewResult;

            // Assert
            Assert.AreEqual("CustomisedError", badResult.ViewName);
        }
Exemplo n.º 15
0
        public async Task CannotCreateAccommodationIfModelError()
        {
            //Arrange
            AccommodationController controller       = new AccommodationController();
            Accommodation           newAccommodation = new Accommodation()
            {
                CheckIn = new DateTime(2018, 11, 29), CheckOut = new DateTime(2018, 11, 28, 10, 0, 0)
            };

            var result = await controller.Create(newAccommodation) as ViewResult;

            controller.ModelState.AddModelError("", "Error");

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.ViewData.ModelState[""].Errors);
        }
Exemplo n.º 16
0
        public async Task DeleteReturnsCorrectAccommodation()
        {
            TestTrekStoriesContext tc  = new TestTrekStoriesContext();
            Accommodation          acc = new Accommodation {
                AccommodationId = 10, Name = "Hotel Test"
            };

            tc.Accommodations.Add(acc);
            var controller = new AccommodationController(tc);
            // Act - delete the accommodation
            var result = await controller.Delete(10) as ViewResult;

            var resultAcc = (Accommodation)result.ViewData.Model;

            // Assert
            Assert.AreEqual(10, resultAcc.AccommodationId);
            Assert.AreEqual("Hotel Test", resultAcc.Name);
        }
Exemplo n.º 17
0
        public async Task DetailsReturnsCorrectAccommodation()
        {
            //Arrange
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            tc.Accommodations.Add(new Accommodation()
            {
                AccommodationId = 99
            });
            AccommodationController controller = new AccommodationController(tc);
            // Act
            var result = await controller.Details(99) as ViewResult;

            var accommodation99 = (Accommodation)result.ViewData.Model;

            // Assert
            Assert.AreEqual(99, accommodation99.AccommodationId);
        }
Exemplo n.º 18
0
        public async Task IndexContainsAllAccommodationsForTripInCorrectOrder()
        {
            // Arrange - create the mock repository
            TestTrekStoriesContext tc   = new TestTrekStoriesContext();
            Accommodation          acc1 = new Accommodation {
                AccommodationId = 1, Name = "Hotel Z"
            };
            Accommodation acc2 = new Accommodation {
                AccommodationId = 2, Name = "Hotel A"
            };

            tc.Accommodations.Add(acc1);
            tc.Accommodations.Add(acc2);
            Trip trip = new Trip
            {
                TripId    = 123,
                TripOwner = "ABC123",
                Steps     = new List <Step>()
                {
                    new Step {
                        StepId = 11, AccommodationId = 1
                    },
                    new Step {
                        StepId = 12, AccommodationId = 2
                    },
                    new Step {
                        StepId = 13
                    }
                }
            };

            tc.Trips.Add(trip);
            // Arrange - create a controller
            AccommodationController controller = new AccommodationController(tc).WithAuthenticatedUser("ABC123");
            // Action
            var viewResult = await controller.Index(123, null) as ViewResult;

            Accommodation[] result = ((IEnumerable <Accommodation>)viewResult.ViewData.Model).ToArray();
            // Assert
            Assert.AreEqual(result.Length, 2);
            Assert.AreEqual(2, result[0].AccommodationId);
            Assert.AreEqual(1, result[1].AccommodationId);
        }
Exemplo n.º 19
0
        public void TestCreateAccommodationOK()
        {
            Accommodation accommodation = new Accommodation()
            {
                Name          = "abm",
                SpotId        = 1,
                Address       = "a",
                ContactNumber = "a",
                Information   = "a",
                PricePerNight = 5.0,
                Id            = 1,
                Images        = new List <AccommodationImage>(),
                Full          = false
            };

            string[] image = new string[1];
            image[0] = "h";
            AccommodationModelIn accommodationModel = new AccommodationModelIn()
            {
                Address     = accommodation.Address,
                Contact     = accommodation.ContactNumber,
                Name        = accommodation.Name,
                Information = accommodation.Information,
                Price       = accommodation.PricePerNight,
                SpotId      = accommodation.SpotId,
                Images      = image
            };
            var mockAccommodation = new Mock <IAccommodationLogic>(MockBehavior.Strict);

            mockAccommodation.Setup(p => p.AddAccommodation(It.IsAny <Accommodation>())).Returns(accommodation);
            var controller = new AccommodationController(mockAccommodation.Object);

            var result = controller.CreateAccommodation(accommodationModel) as OkObjectResult;

            mockAccommodation.VerifyAll();
            Assert.AreEqual(200, result.StatusCode);
        }
Exemplo n.º 20
0
        public async Task CanSaveValidAccommodationChangesAndUpdateTripBudget()
        {
            // Arrange - create mock repository
            TestTrekStoriesContext tc = new TestTrekStoriesContext();

            // Arrange - create an accommodation and a step linked to it
            Accommodation acc = new Accommodation {
                AccommodationId = 1, Name = "Hotel A", CheckIn = new DateTime(2018, 8, 10, 10, 0, 0), CheckOut = new DateTime(2018, 8, 11, 10, 0, 0), Price = 50
            };

            tc.Accommodations.Add(acc);
            Trip trip = new Trip {
                TripId = 11, StartDate = new DateTime(2018, 8, 10), TotalCost = 100, TripOwner = "ABC123"
            };
            Step step = new Step {
                StepId = 123, Trip = trip, AccommodationId = 1, SequenceNo = 1
            };

            tc.Trips.Add(trip);
            tc.Steps.Add(step);

            // Arrange - create the controller with update accommodation data
            var controller = new AccommodationController(tc).WithIncomingValues(new FormCollection {
                { "AccommodationId", "1" }, { "Name", "Name Changed" }, { "CheckIn", "10-08-2018 10:00 AM" }, { "CheckOut", "11-08-2018 10:00 AM" }, { "Price", "60" }
            }).WithAuthenticatedUser("ABC123");

            // Act - try to save the accommodation
            var result = await controller.EditPost(1, null) as RedirectToRouteResult;

            Trip updatedTrip = tc.Trips.Find(11);

            // Assert - check the method result type
            Assert.AreEqual("Details", result.RouteValues["action"]);
            Assert.AreEqual("Trip", result.RouteValues["controller"]);
            Assert.AreEqual(110, updatedTrip.TotalCost);
        }