Ejemplo n.º 1
0
        public void TestEmptySearchAccommodations()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            HomeMyDayDbContext       context    = new HomeMyDayDbContext(optionsBuilder.Options);
            IAccommodationRepository repository = new EFAccommodationRepository(context);
            IReviewRepository        reviewRepo = new EFReviewRepository(context, repository);
            IAccommodationManager    manager    = new AccommodationManager(repository, reviewRepo);

            SearchController target = new SearchController(manager);

            AccommodationSearchViewModel searchModel = new AccommodationSearchViewModel()
            {
                StartDate = new DateTime(2017, 10, 12),
                EndDate   = new DateTime(2017, 10, 22),
                Location  = "Gilze",
                Persons   = 4
            };

            ViewResult result = target.Results(searchModel);
            AccommodationSearchResultsViewModel model = result.Model as AccommodationSearchResultsViewModel;

            Assert.NotNull(model);
            Assert.NotNull(model.Search);
            Assert.Empty(model.Accommodations);
            Assert.Equal(searchModel, model.Search);
            Assert.Equal("NoResults", result.ViewName);
        }
Ejemplo n.º 2
0
        public void TestFilledSearchAccommodations()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options);

            context.Accommodations.Add(new Accommodation()
            {
                NotAvailableDates = new List <DateEntity>()
                {
                    new DateEntity()
                    {
                        Date = new DateTime(2017, 10, 11)
                    },
                    new DateEntity()
                    {
                        Date = new DateTime(2017, 10, 23)
                    },
                },
                Location   = "Amsterdam",
                MaxPersons = 4
            });

            context.SaveChanges();

            IAccommodationRepository repository = new EFAccommodationRepository(context);
            IReviewRepository        reviewRepo = new EFReviewRepository(context, repository);
            IAccommodationManager    manager    = new AccommodationManager(repository, reviewRepo);

            SearchController target = new SearchController(manager);

            AccommodationSearchViewModel searchModel = new AccommodationSearchViewModel()
            {
                StartDate = new DateTime(2017, 10, 12),
                EndDate   = new DateTime(2017, 10, 22),
                Location  = "Amsterdam",
                Persons   = 4
            };

            ViewResult result = target.Results(searchModel);
            AccommodationSearchResultsViewModel resultsModel = result.Model as AccommodationSearchResultsViewModel;

            Assert.NotNull(resultsModel);
            Assert.NotNull(resultsModel.Accommodations);
            Assert.NotEmpty(resultsModel.Accommodations);
            Assert.True(resultsModel.Accommodations.Count() == 1);
            Assert.NotNull(resultsModel.Search);
            Assert.Equal(searchModel, resultsModel.Search);
            Assert.Equal("Results", result.ViewName);
        }
        public ViewResult Results(AccommodationSearchViewModel search)
        {
            var searchResultsModel = new AccommodationSearchResultsViewModel
            {
                //Store the original search parameters
                Search = search,

                //Perform search
                Accommodations = _accommodationManager.Search(search.Location, search.StartDate ?? DateTime.Now, search.EndDate ?? DateTime.Now.AddDays(1), search.Persons)
            };

            if (searchResultsModel.Accommodations.Any())
            {
                return(View("Results", searchResultsModel));
            }
            else
            {
                return(View("NoResults", searchResultsModel));
            }
        }