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);
        }
예제 #2
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);
        }
        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);
        }
예제 #13
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 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);
        }