public void TestSearchDepartureAndArrivalReturnNoAccommodation() { 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, 12) }, new DateEntity() { Date = new DateTime(2017, 10, 13) }, new DateEntity() { Date = new DateTime(2017, 10, 14) }, new DateEntity() { Date = new DateTime(2017, 10, 15) }, new DateEntity() { Date = new DateTime(2017, 10, 16) }, new DateEntity() { Date = new DateTime(2017, 10, 17) }, new DateEntity() { Date = new DateTime(2017, 10, 18) }, new DateEntity() { Date = new DateTime(2017, 10, 19) }, new DateEntity() { Date = new DateTime(2017, 10, 20) }, new DateEntity() { Date = new DateTime(2017, 10, 21) }, new DateEntity() { Date = new DateTime(2017, 10, 22) }, }, Name = "Amsterdam", MaxPersons = 4 }); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); IEnumerable <Accommodation> searchResults = repository.Search("Amsterdam", new DateTime(2017, 10, 13), new DateTime(2017, 10, 19), 4); Assert.Empty(searchResults); }
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); }
public void TestSearchLocationSpacesReturnAccommodation() { 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); IEnumerable <Accommodation> searchResults = repository.Search(" Amsterdam ", new DateTime(2017, 10, 11), new DateTime(2017, 10, 23), 4); Assert.NotEmpty(searchResults); }
public void TestAccommodationsFilledRepository() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = true }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = true } ); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.True(repository.Accommodations.Count() == 4); }
public async void TestSaveNotExistingAccommodationWithNotExistingId() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); Accommodation existingAccommodation = new Accommodation() { Id = 2, Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Name = "Example Name", Country = "Unknown", MaxPersons = 2 }; await context.Accommodations.AddAsync(existingAccommodation); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); // Change some values Accommodation accommodationToUpdate = new Accommodation() { Id = 3, Country = "The Netherlands", Name = "Updated name", Description = "Updated description", MaxPersons = 2 }; await Assert.ThrowsAsync <DbUpdateConcurrencyException>(() => repository.Save(accommodationToUpdate)); }
public void TestAddNotExistingReview() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository accommodationRepository = new EFAccommodationRepository(context); context.Accommodations.Add(new Accommodation() { Id = 1, Name = "TestAccommodation", Beds = 6, Country = "Amsterdam", Rooms = 3 }); context.SaveChanges(); IReviewRepository repository = new EFReviewRepository(context, accommodationRepository); Assert.True(repository.AddReview(1, "Review Holiday 001", "TestReview", "De vakantie was goed!")); Assert.True(repository.GetAccomodationReviews(1).Count() == 1); }
public void TestFilledSearchAccommodations() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.Add(new Accommodation() { Beds = 4, Continent = "Europe", Country = "Netherlands", Description = "Van der Valk hotels", Location = "Gilze", MaxPersons = 4, Name = "Van der valk Gilze", Rooms = 5 }); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); IReviewRepository reviewRepo = new EFReviewRepository(context, repository); IAccommodationManager manager = new AccommodationManager(repository, reviewRepo); SearchBarViewComponent target = new SearchBarViewComponent(manager); AccommodationSearchViewModel results = (AccommodationSearchViewModel)(target.Invoke() as ViewViewComponentResult).ViewData.Model; Assert.NotNull(results); Assert.NotEmpty(results.Accommodations); }
public void TestSearchReturnAfterDeparture() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.Throws <ArgumentOutOfRangeException>(() => repository.Search("Amsterdam", new DateTime(2017, 10, 12), new DateTime(2017, 10, 11), 4)); }
public void TestSearchEmptyGuests() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.Throws <ArgumentNullException>(() => repository.Search("Amsterdam", DateTime.Now, DateTime.Now, 0)); }
public void TestGetIdBelowZeroAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.Throws <ArgumentOutOfRangeException>(() => repository.GetAccommodation(0)); }
public void TestAccommodationsEmptyRepository() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.Empty(repository.Accommodations); }
public void TestAddReview() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); var context = new HomeMyDayDbContext(optionsBuilder.Options); var accommodation = new Accommodation() { Id = 1, Name = "TestAccommodation" }; context.Accommodations.Add(accommodation); context.SaveChanges(); IAccommodationRepository accommodationRepository = new EFAccommodationRepository(context); IReviewRepository reviewRepository = new EFReviewRepository(context, accommodationRepository); var dummy = Encoding.ASCII.GetBytes("{}"); var sessionMock = new Mock <ISession>(); sessionMock.Setup(x => x.TryGetValue(It.IsAny <string>(), out dummy)).Returns(true).Verifiable(); var httpContext = new DefaultHttpContext { Session = sessionMock.Object }; IReviewManager reviewManager = new ReviewManager(reviewRepository); var target = new ReviewController(reviewManager) { TempData = new TempDataDictionary(httpContext, new SessionStateTempDataProvider()) }; ReviewViewModel reviewViewModelToAdd = new ReviewViewModel() { AccommodationId = accommodation.Id, Name = "TestReviewAddTest", Approved = true, Date = DateTime.Now, Title = "TestReviewAdd", Text = "Dit was goed!" }; var result = target.AddReview(reviewViewModelToAdd) as RedirectToActionResult; Assert.NotNull(result.ActionName); Assert.NotNull(result.ControllerName); Assert.Equal("Detail", result.ActionName); Assert.Equal("Accommodation", result.ControllerName); }
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 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); SearchBarViewComponent target = new SearchBarViewComponent(manager); AccommodationSearchViewModel results = (AccommodationSearchViewModel)(target.Invoke() as ViewViewComponentResult).ViewData.Model; Assert.NotNull(results); Assert.Empty(results.Accommodations); }
public async void TestEmptyListPageBelowZeroPageSizeBelowZero() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository repository = new EFAccommodationRepository(context); PaginatedList <Accommodation> paginatedAccommodations = await repository.List(-5, -10); Assert.NotNull(paginatedAccommodations); Assert.Empty(paginatedAccommodations); Assert.Equal(1, paginatedAccommodations.PageIndex); Assert.Equal(10, paginatedAccommodations.PageSize); Assert.Equal(1, paginatedAccommodations.TotalPages); Assert.False(paginatedAccommodations.HasPreviousPage); Assert.False(paginatedAccommodations.HasNextPage); }
public void TestGetIdNotExistingAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.Add(new Accommodation() { Location = "Amsterdam", MaxPersons = 4, Id = 1 }); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); Assert.Throws <KeyNotFoundException>(() => repository.GetAccommodation(2)); }
public async void TestSaveNullAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION } ); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); await Assert.ThrowsAsync <ArgumentNullException>(() => repository.Save(null)); }
public async void TestListWithItemsPageBelowZeroPageSizeBelowZero() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false } ); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); PaginatedList <Accommodation> paginatedAccommodations = await repository.List(-8, -10); Assert.NotNull(paginatedAccommodations); Assert.Equal(4, paginatedAccommodations.Count); Assert.Equal(1, paginatedAccommodations.PageIndex); Assert.Equal(10, paginatedAccommodations.PageSize); Assert.Equal(1, paginatedAccommodations.TotalPages); Assert.False(paginatedAccommodations.HasPreviousPage); Assert.False(paginatedAccommodations.HasNextPage); }
public async void TestSaveUpdatedAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); Accommodation accommodationToUpdate = new Accommodation() { Id = 1, Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Name = "Example Name", Country = "Unknown", MaxPersons = 2 }; await context.Accommodations.AddAsync(accommodationToUpdate); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); // Change some values accommodationToUpdate.Country = "The Netherlands"; accommodationToUpdate.Name = "Updated name"; accommodationToUpdate.Description = "Updated description"; await repository.Save(accommodationToUpdate); // Check if the item was updated Accommodation updatedAccommodation = await context.Accommodations.FindAsync((long)1); Assert.NotNull(updatedAccommodation); Assert.Equal("Updated name", updatedAccommodation.Name); Assert.Equal("The Netherlands", updatedAccommodation.Country); Assert.Equal("Updated description", updatedAccommodation.Description); Assert.Equal(2, updatedAccommodation.MaxPersons); }
public void TestAccommodationsTrueRecommended() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = true }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = false }, new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Recommended = true } ); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); IReviewRepository reviewRepository = new EFReviewRepository(context, repository); IAccommodationManager manager = new AccommodationManager(repository, reviewRepository); RecommendedAccommodationViewComponent component = new RecommendedAccommodationViewComponent(manager); IEnumerable <Accommodation> accommodations = ((IEnumerable <Accommodation>)(component.Invoke() as ViewViewComponentResult).ViewData.Model); Assert.True(accommodations.Count() == 2); }
public void TestSearchDepartureAndArrivalReturnExistingAccommodation() { 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); IEnumerable <Accommodation> searchResults = repository.Search("Amsterdam", new DateTime(2017, 10, 11), new DateTime(2017, 10, 23), 4); Assert.NotEmpty(searchResults); Accommodation firstResult = searchResults.FirstOrDefault(); Assert.NotNull(firstResult); Assert.True(firstResult.MaxPersons == 4); Assert.True(firstResult.Location == "Amsterdam"); }
public void TestGetIdExistingAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.Add(new Accommodation() { Location = "Amsterdam", MaxPersons = 4, Id = 1 }); context.SaveChanges(); IAccommodationRepository repository = new EFAccommodationRepository(context); Accommodation accommodation = repository.GetAccommodation(1); Assert.NotNull(accommodation); Assert.Equal("Amsterdam", accommodation.Location); }
public void TestAddArgumentOutOfRangeExceptionReview() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); IAccommodationRepository accommodationRepository = new EFAccommodationRepository(context); context.Accommodations.Add(new Accommodation() { Id = 1, Name = "TestAccommodation", Beds = 6, Country = "Amsterdam", Rooms = 3 }); context.SaveChanges(); IReviewRepository repository = new EFReviewRepository(context, accommodationRepository); Assert.Throws <ArgumentOutOfRangeException>(() => repository.AddReview(0, null, null, null)); }
public async void TestDeleteExistingAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Id = 1, Description = DEFAULT_ACCOMMODATION_DESCRIPTION } ); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); await repository.Delete(1); Accommodation deletedAccommodation = await context.Accommodations.FindAsync((long)1); Assert.Null(deletedAccommodation); }
public async void TestSaveNewAccommodation() { var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>(); optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString()); HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options); context.Accommodations.AddRange( new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION } ); await context.SaveChangesAsync(); IAccommodationRepository repository = new EFAccommodationRepository(context); Accommodation accommodationToCreate = new Accommodation() { Description = DEFAULT_ACCOMMODATION_DESCRIPTION, Name = "Example Name", Country = "Unknown" }; await repository.Save(accommodationToCreate); // Check if the item was created Accommodation foundAccommodation = await context.Accommodations.FirstOrDefaultAsync(x => x.Name == "Example Name"); Assert.NotNull(foundAccommodation); Assert.Equal("Example Name", foundAccommodation.Name); Assert.NotEqual(0, foundAccommodation.Id); Assert.Equal("Unknown", foundAccommodation.Country); Assert.Equal(DEFAULT_ACCOMMODATION_DESCRIPTION, foundAccommodation.Description); }