public async Task ThrowsException_WhenListOfCocktailIngredientsIsNull() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var imageURLTest = "https://www.google.com/"; List <CocktailIngredientDTO> listOfIngr = null; var options = TestUtilities.GetOptions(nameof(ThrowsException_WhenListOfCocktailIngredientsIsNull)); using (var assertContext = new CocktailMagicianDb(options)) { var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.AddAsync(cocktailNameTest, imageURLTest, listOfIngr)); } }
public async Task AddTheCocktailToDB_WhenValidModelIsPassed() { var cocktailName = "Mojito"; var image = new Mock <IFormFile>().Object; var options = TestUtils.GetOptions(nameof(AddTheCocktailToDB_WhenValidModelIsPassed)); using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); await sut.AddCocktail( new CocktailDto { Name = cocktailName, CocktailImage = image }); Assert.AreEqual(1, assertContext.Cocktails.Count()); } }
public async Task SetRecipe_WhenIdIsValid() { var options = TestUtils.GetOptions(nameof(SetRecipe_WhenIdIsValid)); var cocktailName = "Mojito"; var id = "111"; using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); assertContext.Add(new Cocktail { Id = id, Name = cocktailName, Recepie = null }); await assertContext.SaveChangesAsync(); await sut.GetCocktailRecipe(id); _recipeServices.Verify(r => r.ExtractRecipe(assertContext.Cocktails.First()), Times.Once()); } }
public async Task CorrectlyLoadDependenciesForLoadedCocktail_WhenPassedIdIsCorrect() { var options = TestUtils.GetOptions(nameof(CorrectlyLoadDependenciesForLoadedCocktail_WhenPassedIdIsCorrect)); var cocktailId = "15"; var cocktailComponentId = "15"; var ingredientId = "15"; var ingredientName = "Bira"; var newIngredient = new Ingredient() { Id = ingredientId, Name = ingredientName }; var newCocktailComponent = new CocktailComponent() { Id = cocktailComponentId, IngredientId = ingredientId, Ingredient = newIngredient }; var listComponents = new List <CocktailComponent>(); listComponents.Add(newCocktailComponent); var newCocktail = new Cocktail() { Id = cocktailId, CocktailComponents = listComponents }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newIngredient); arrangeContext.Add(newCocktailComponent); arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.GetCocktail(cocktailId); Assert.AreEqual(cocktailComponentId, result.CocktailComponents.ToList()[0].Id); Assert.AreEqual(ingredientId, result.CocktailComponents.ToList()[0].IngredientId); Assert.AreEqual(ingredientName, result.CocktailComponents.ToList()[0].Ingredient.Name); } }
public async Task SetDateToNull_WhenIdIsValid() { var options = TestUtils.GetOptions(nameof(SetDateToNull_WhenIdIsValid)); var cocktailName = "Mojito"; var id = "111"; using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); assertContext.Add(new Cocktail { Id = id, Name = cocktailName }); await assertContext.SaveChangesAsync(); Assert.AreEqual(null, assertContext.Cocktails.First().DateDeleted); await sut.DeleteCocktial("111"); Assert.AreNotEqual(null, assertContext.Cocktails.First().DateDeleted); } }
public async Task ReturnRecipeWhenExists_WhenIdIsValid() { var options = TestUtils.GetOptions(nameof(ReturnRecipeWhenExists_WhenIdIsValid)); var cocktailName = "Mojito"; var id = "111"; var recipe = "11111"; using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); assertContext.Add(new Cocktail { Id = id, Name = cocktailName, Recepie = recipe }); await assertContext.SaveChangesAsync(); var result = await sut.GetCocktailRecipe(id); Assert.AreEqual(recipe, result); } }
public async Task CallUploadFileMethod_WithCorrectParameters() { var options = TestUtils.GetOptions(nameof(CallUploadFileMethod_WithCorrectParameters)); var cocktailName = "Mojito"; var recipe = "111"; var image = new Mock <IFormFile>().Object; var cocktailDTO = new CocktailDto() { Name = cocktailName, Recipe = recipe, CocktailImage = image }; using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); await sut.AddCocktail(cocktailDTO); _fileUploadService.Verify(n => n.SetUniqueImagePathForCocktail(image), Times.Once()); } }
public async Task AddAllDependentEntities_WhenValidModelIsPassed() { var cocktailName = "Mojito"; var image = new Mock <IFormFile>().Object; var recipe = "111"; var options = TestUtils.GetOptions(nameof(AddAllDependentEntities_WhenValidModelIsPassed)); var cocktailDTO = new CocktailDto() { Name = cocktailName, CocktailImage = image, Recipe = recipe, Ingredients = new List <CocktailComponentDTO> { new CocktailComponentDTO { IngredientId = "1", Quantity = 200, Unit = Unit.ml, Ingredient = "Vodka" }, new CocktailComponentDTO { IngredientId = "2", Quantity = 300, Unit = Unit.ml, Ingredient = "Vodka2" } } }; using (var arrangeContext = new CMContext(options)) { var sut = new CocktailServices(arrangeContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); await sut.AddCocktail(cocktailDTO); Assert.AreEqual(cocktailName, arrangeContext.Cocktails.First().Name); Assert.AreEqual(2, arrangeContext.Cocktails.First().CocktailComponents.Count); } }
public async Task ReturnCorrectType_WhenCalled() { var options = TestUtils.GetOptions(nameof(ReturnCorrectType_WhenCalled)); using (var arrangeContext = new CMContext(options)) { for (int i = 0; i < 5; i++) { arrangeContext.Add(new Cocktail()); } ; await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.GetCocktailsForHomePage(); Assert.IsInstanceOfType(result, typeof(List <CocktailDto>)); } }
public void ReturnAllTypeCocktailsByCocktailAndIngredientName() { // Arrange var options = TestUtilities.GetOptions(nameof(ReturnAllTypeCocktailsByCocktailAndIngredientName)); // Act, Assert using (var assertContext = new CocktailDB(options)) { var sut = new CocktailServices(assertContext); var name = "Rums and Dreams"; var cocktail = sut.AddAsync(name, null).GetAwaiter().GetResult(); name = "Rums and Dreams2"; var cocktail2 = sut.AddAsync(name, null).GetAwaiter().GetResult(); var ingredient = new Ingredient { Name = "sugar", Type = "sweetener", }; assertContext.Ingredients.Add(ingredient); var cocktailIngredient = new CocktailIngredient { Ingredient = ingredient, IngredientID = ingredient.Id, Cocktail = cocktail, CocktailID = cocktail.Id }; assertContext.CocktailIngredients.Add(cocktailIngredient); assertContext.SaveChanges(); var cocktailName = cocktail.Name; var ingredientName = ingredient.Name; var includeOnlyAlcoholic = false; var result = sut.SearchByMultipleCriteriaAsync(cocktailName, ingredientName, includeOnlyAlcoholic).GetAwaiter().GetResult(); Assert.IsTrue(result.Count == 1 && result[0] == cocktail); } }
public async Task GetCorrectNumerOfPages_WhenCalled() { var options = TestUtils.GetOptions(nameof(GetCorrectNumerOfPages_WhenCalled)); using (var arrangeContext = new CMContext(options)) { for (int i = 0; i < 10; i++) { arrangeContext.Add(new Cocktail()); } ; await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.GetPageCountForCocktials(2); Assert.AreEqual(5, result); } }
public async Task AddIngredientsToCocktail_Adds_Correct() { //Arrange var options = Utils.GetOptions(nameof(AddIngredientsToCocktail_Adds_Correct)); var ingredient = new Ingredient { Id = Guid.NewGuid(), Name = "Vodka" }; var ingredient2 = new Ingredient { Id = Guid.NewGuid(), Name = "Rum" }; var cocktail = new Cocktail { Id = Guid.NewGuid(), Name = "Manhattan" }; ICollection <Guid> ingredientsId = new List <Guid> { ingredient.Id, ingredient2.Id }; using (var arrangeContext = new CMContext(options)) { await arrangeContext.Ingredients.AddRangeAsync(ingredient, ingredient2); await arrangeContext.Cocktails.AddAsync(cocktail); await arrangeContext.SaveChangesAsync(); } //Act, Assert using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext); var result = await sut.AddIngredientsToCocktail(cocktail.Id, ingredientsId); Assert.AreEqual(2, result.Ingredients.Count); Assert.AreEqual(2, assertContext.Ingredients.Count()); Assert.AreEqual("Manhattan", result.Ingredients.ToList()[0].Cocktail.Name); Assert.AreEqual("Manhattan", result.Ingredients.ToList()[1].Cocktail.Name); } }
public async Task ThrowException_WhenCocktailIsDeleted() { var options = TestUtils.GetOptions(nameof(ThrowException_WhenCocktailIsDeleted)); var cocktailId = "15"; var newCocktail = new Cocktail() { Id = cocktailId, DateDeleted = DateTime.Now }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var ex = await Assert.ThrowsExceptionAsync <MagicException>( async() => await sut.FindCocktailById(cocktailId)); } }
public async Task RemoveIngredientFromCocktail_Removes_Correct() { //Arrange //Arrange var options = Utils.GetOptions(nameof(RemoveIngredientFromCocktail_Removes_Correct)); var cocktail = new Cocktail { Id = Guid.NewGuid(), Name = "Cuba Libre" }; var ingredient = new Ingredient { Id = Guid.NewGuid(), Name = "Rum" }; var cocktailIngredient = new CocktailIngredient { CocktailId = cocktail.Id, IngredientId = ingredient.Id }; using (var arrangeContext = new CMContext(options)) { await arrangeContext.Cocktails.AddAsync(cocktail); await arrangeContext.CocktailIngredients.AddAsync(cocktailIngredient); await arrangeContext.Ingredients.AddAsync(ingredient); await arrangeContext.SaveChangesAsync(); } //Act, Assert using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext); var result = await sut.RemoveIngredientFromCocktail(cocktail.Name, ingredient.Name); Assert.AreEqual(0, assertContext.CocktailIngredients.Count()); Assert.AreEqual(0, result.Ingredients.Count()); Assert.IsInstanceOfType(result, typeof(CocktailDTO)); } }
public async Task ThrowException_WhenCocktailIngredientHasNoQuantity() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var imageURLTest = "https://www.google.com/"; var ingrNameTest = "IngrTest"; var ingrUnitTest = "Unit"; var quantityTest = 0.0; var cocktailIngredientDTO = new CocktailIngredientDTO { Name = ingrNameTest, Unit = ingrUnitTest, Value = quantityTest }; var listOfIngr = new List <CocktailIngredientDTO> { cocktailIngredientDTO }; var cocktailTest = new Cocktail { Name = cocktailNameTest, ImagePath = imageURLTest }; var options = TestUtilities.GetOptions(nameof(ThrowException_WhenCocktailIngredientHasNoQuantity)); using (var assertContext = new CocktailMagicianDb(options)) { var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.AddAsync(cocktailNameTest, imageURLTest, listOfIngr)); } }
public async Task GetCorrectCocktail_WhenValidIdIsPassed() { var options = TestUtils.GetOptions(nameof(GetCorrectCocktail_WhenValidIdIsPassed)); var cocktailId = "15"; var newCocktail = new Cocktail() { Id = cocktailId }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.FindCocktailById(cocktailId); Assert.AreEqual(cocktailId, result.Id); } }
public async Task GetMax5SortedCocktails_WhenCalled() { var options = TestUtils.GetOptions(nameof(GetMax5SortedCocktails_WhenCalled)); var sortOrder = "name_desc"; using (var arrangeContext = new CMContext(options)) { for (int i = 0; i < 10; i++) { arrangeContext.Add(new Cocktail()); } ; await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.GetFiveSortedCocktailsAsync(sortOrder); Assert.AreEqual(5, result.Count); } }
public async Task ReturnObjectOfTheCorrectType_WhenValidIdIsPassed() { var options = TestUtils.GetOptions(nameof(ReturnObjectOfTheCorrectType_WhenValidIdIsPassed)); var cocktailId = "15"; var newCocktail = new Cocktail() { Id = cocktailId }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.FindCocktailById(cocktailId); Assert.IsInstanceOfType(result, typeof(CocktailDto)); } }
public async Task ThrowCorrectMessage_WhenCocktailDeleteDateIsNotNull() { var options = TestUtils.GetOptions(nameof(ThrowCorrectMessage_WhenCocktailDeleteDateIsNotNull)); var cocktailId = "15"; var newCocktail = new Cocktail() { Id = cocktailId, DateDeleted = DateTime.Now }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var ex = await Assert.ThrowsExceptionAsync <MagicException>( async() => await sut.GetCocktailNameById(cocktailId)); Assert.AreEqual("Cocktail doesn't exist in DB!", ex.Message); } }
public async Task CreateCocktail_Returns_Correct() { //Arrange var options = Utils.GetOptions(nameof(CreateCocktail_Returns_Correct)); var cocktail = new CocktailDTO { Name = "Cuba Libre", IsAlcoholic = true, }; //Act, Assert using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext); var result = await sut.CreateCocktail(cocktail); Assert.AreEqual(cocktail.Name, result.Name); Assert.AreEqual(true, result.IsAlcoholic); Assert.IsInstanceOfType(result, typeof(CocktailDTO)); } }
public async Task ThrowsExceptionWhen_CocktailIsDeleted() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var imageURLTest = "https://www.google.com/"; var ingrNameTest = "IngrTest"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var ingredient = new Ingredient { Name = ingrNameTest, Unit = ingrUnitTest }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = imageURLTest, IsDeleted = true }; var barImagaUrlTest = "https://www.google.com/"; var barTestName = "NameTest"; var addressTest = new Address { Name = "AddressTest", City = new City { Name = "SofiaTest" }, Latitude = 1.1, Longitude = 1.1 }; var bar = new Bar { Name = barTestName, ImagePath = barImagaUrlTest, Address = addressTest }; var options = TestUtilities.GetOptions(nameof(ThrowsExceptionWhen_CocktailIsDeleted)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.Add(new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredient, Quatity = quantityTest }); arrangeContext.BarCocktails.Add(new BarCocktail { Cocktail = cocktail, Bar = bar }); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailId = await assertContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstAsync(); var barId = await assertContext.Bars.Where(c => c.Name == barTestName).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.RemoveBarsAsync(cocktailId, new List <int> { barId })); }; }
public async Task SetsCocktailAsDeleted_AndRemovedItsBarsAndIngredients() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var CocktailImageUrlTest = "https://www.google.com/"; var ingrNameTest = "IngrTest"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var ingredient = new Ingredient { Name = ingrNameTest, Unit = ingrUnitTest }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = CocktailImageUrlTest }; var barImagaUrlTest = "https://www.google.com/"; var barTestName = "NameTest"; var addressTest = new Address { Name = "AddressTest", City = new City { Name = "SofiaTest" }, Latitude = 1.1, Longitude = 1.1 }; var bar = new Bar { Name = barTestName, ImagePath = barImagaUrlTest, Address = addressTest }; var options = TestUtilities.GetOptions(nameof(SetsCocktailAsDeleted_AndRemovedItsBarsAndIngredients)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.Add(new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredient, Quatity = quantityTest }); arrangeContext.BarCocktails.Add(new BarCocktail { Bar = bar, Cocktail = cocktail }); await arrangeContext.SaveChangesAsync(); } using (var actContext = new CocktailMagicianDb(options)) { var cocktailId = await actContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(actContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await sut.DeleteAsync(cocktailId); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailInDb = await assertContext.Cocktails.FirstAsync(c => c.Name == cocktailNameTest); Assert.IsTrue(cocktailInDb.IsDeleted); Assert.IsFalse(assertContext.CocktailIngredients.Any(c => c.CocktailId == cocktailInDb.Id && c.IsDeleted == false)); Assert.IsFalse(assertContext.BarCocktails.Any(c => c.CocktailId == cocktailInDb.Id)); } }
public async Task ThrowException_CocktailIsDeleted() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var imageURLTest = "https://www.google.com/"; var ingrToUpdateNameTest = "IngrToUpdate"; var ingrToRemoveNameTest = "IngrToRemove"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var quantityToUpdate = 1; var ingredientToUpdate = new Ingredient { Name = ingrToUpdateNameTest, Unit = ingrUnitTest }; var ingredientToRemove = new Ingredient { Name = ingrToRemoveNameTest, Unit = ingrUnitTest }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = imageURLTest, IsDeleted = true }; var newIistIngrQuantity = new List <CocktailIngredientDTO> { new CocktailIngredientDTO { Name = ingrToUpdateNameTest, Value = quantityToUpdate, Unit = ingrUnitTest } }; var listIngrToRemove = new List <string> { ingrToRemoveNameTest }; var options = TestUtilities.GetOptions(nameof(ThrowException_CocktailIsDeleted)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.AddRange(new List <CocktailIngredient> { new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredientToUpdate, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredientToRemove, Quatity = quantityTest } }); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailId = await assertContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.EditIngredientsAsync(cocktailId, newIistIngrQuantity, listIngrToRemove)); }; }
public async Task CorrectlyLoadAllDependenciesForLoadedCocktail_WhenPassedIdIsCorrect() { var options = TestUtils.GetOptions(nameof(CorrectlyLoadAllDependenciesForLoadedCocktail_WhenPassedIdIsCorrect)); var cocktailId = "15"; var barId = "51"; var barName = "Fofo"; var cocktailComponentId = "15"; var ingredientId = "15"; var ingredientName = "Bira"; var newIngredient = new Ingredient() { Id = ingredientId, Name = ingredientName }; var newCocktailComponent = new CocktailComponent() { Id = cocktailComponentId, IngredientId = ingredientId, Ingredient = newIngredient }; var listComponents = new List <CocktailComponent>(); listComponents.Add(newCocktailComponent); var country = new Country() { Id = "1", Name = "Bulgaria" }; var adress = new Address() { Id = "1", City = "Sofia", Country = country }; var newBar = new Bar() { Id = barId, Name = barName, Address = adress }; var newBarCocktail = new BarCocktail() { BarId = barId, Bar = newBar, CocktailId = cocktailId }; var barCocktails = new List <BarCocktail>(); barCocktails.Add(newBarCocktail); var newCocktail = new Cocktail() { Id = cocktailId, CocktailComponents = listComponents, BarCocktails = barCocktails }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(newIngredient); arrangeContext.Add(country); arrangeContext.Add(adress); arrangeContext.Add(newBar); arrangeContext.Add(newBarCocktail); arrangeContext.Add(newCocktailComponent); arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.FindCocktailById(cocktailId); Assert.AreEqual(barId, result.BarCocktails[0].BarId); Assert.AreEqual(barName, result.BarCocktails[0].Bar.Name); Assert.AreEqual("Sofia", result.BarCocktails[0].Bar.Address.City); Assert.AreEqual("Bulgaria", result.BarCocktails[0].Bar.Address.Country.Name); Assert.AreEqual(ingredientName, result.Ingredients[0].Ingredient); } }
public async Task AddsBarToCocktailsList() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var CocktailImageUrlTest = "https://www.google.com/"; var ingrNameTest = "IngrTest"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var ingredient = new Ingredient { Name = ingrNameTest, Unit = ingrUnitTest }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = CocktailImageUrlTest }; var barImagaUrlTest = "https://www.google.com/"; var barTestName = "NameTest"; var addressTest = new Address { Name = "AddressTest", City = new City { Name = "SofiaTest" }, Latitude = 1.1, Longitude = 1.1 }; var bar = new Bar { Name = barTestName, ImagePath = barImagaUrlTest, Address = addressTest, }; var options = TestUtilities.GetOptions(nameof(AddsBarToCocktailsList)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.Add(new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredient, Quatity = quantityTest }); arrangeContext.BarCocktails.Add(new BarCocktail { Bar = bar, Cocktail = cocktail }); await arrangeContext.SaveChangesAsync(); } using (var actContext = new CocktailMagicianDb(options)) { var cocktailId = await actContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstOrDefaultAsync(); var barId = await actContext.Bars.Where(c => c.Name == barTestName).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(actContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); await sut.RemoveBarsAsync(cocktailId, new List <int> { barId }); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailInDB = await assertContext.Cocktails .Include(c => c.BarCocktails) .FirstOrDefaultAsync(c => c.Name == cocktailNameTest); var barId = await assertContext.Bars.Where(c => c.Name == barTestName).Select(c => c.Id).FirstAsync(); Assert.AreEqual(0, cocktailInDB.BarCocktails.Count()); Assert.IsFalse(cocktailInDB.BarCocktails.Any(c => c.BarId == barId)); } }
public async Task ReturnAllBarsOfCocktail() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var CocktailImageUrlTest = "https://www.google.com/"; var ingrNameTest = "IngrTest"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var ingredient = new Ingredient { Name = ingrNameTest, Unit = ingrUnitTest }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = CocktailImageUrlTest }; var barImagaUrlTest = "https://www.google.com/"; var bar1Name = "Name1Test"; var bar2Name = "Name2est"; var notIncludedBarName = "Name3est"; var addressTest = new Address { Name = "AddressTest", City = new City { Name = "SofiaTest" }, Latitude = 1.1, Longitude = 1.1 }; var bar1 = new Bar { Name = bar1Name, ImagePath = barImagaUrlTest, Address = addressTest, }; var bar2 = new Bar { Name = bar2Name, ImagePath = barImagaUrlTest, Address = addressTest, }; var notIncudedBar = new Bar { Name = notIncludedBarName, ImagePath = barImagaUrlTest, Address = addressTest, }; var options = TestUtilities.GetOptions(nameof(ReturnAllBarsOfCocktail)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.Add(new CocktailIngredient { Cocktail = cocktail, Ingredient = ingredient, Quatity = quantityTest }); arrangeContext.BarCocktails.AddRange(new List <BarCocktail> { new BarCocktail { Cocktail = cocktail, Bar = bar1 }, new BarCocktail { Cocktail = cocktail, Bar = bar2 } }); arrangeContext.Bars.Add(notIncudedBar); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailId = await assertContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); var listOfBars = await sut.GetBarsOfCocktailAsync(cocktailId); Assert.AreEqual(2, listOfBars.Count()); Assert.IsFalse(listOfBars.Any(b => b.Name == notIncludedBarName)); } }
public async Task AddAllDependentEntities_WhenValidModelIsPassed_OnUpdate() { var cocktailName = "Mojito"; var image = new Mock <IFormFile>().Object; var recipe = "111"; var cocktailDtoId = "15"; var options = TestUtils.GetOptions(nameof(AddAllDependentEntities_WhenValidModelIsPassed_OnUpdate)); var cocktailDTO = new CocktailDto() { Id = cocktailDtoId, Name = cocktailName, CocktailImage = image, Recipe = recipe, Ingredients = new List <CocktailComponentDTO> { new CocktailComponentDTO { IngredientId = "1", Quantity = 200, Unit = Unit.ml, Ingredient = "Vodka" }, new CocktailComponentDTO { IngredientId = "2", Quantity = 300, Unit = Unit.ml, Ingredient = "Vodka2" } } }; using (var arrangeContext = new CMContext(options)) { var sut = new CocktailServices(arrangeContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); arrangeContext.Add(new Cocktail { Id = cocktailDtoId, Name = "NotMojito", Image = "111", Rating = 10.00, CocktailComponents = new List <CocktailComponent> { new CocktailComponent { IngredientId = "6", Ingredient = new Ingredient { Id = "6", Name = "Pepsi" }, Quantity = 200, Unit = Unit.ml, } } }); await arrangeContext.SaveChangesAsync(); await sut.Update(cocktailDTO); Assert.AreEqual("Vodka", arrangeContext.Cocktails.First().CocktailComponents.ToList()[0].Ingredient.Name); Assert.AreEqual("Vodka2", arrangeContext.Cocktails.First().CocktailComponents.ToList()[1].Ingredient.Name); Assert.AreEqual(2, arrangeContext.Cocktails.First().CocktailComponents.Count); } }
public async Task ReturnListOfNotUsedIngredientsInCocktail() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktailNameTest = "TestName"; var imageURLTest = "https://www.google.com/"; var includedIngrNameTest = "Included Ingredient"; var notIncludedIngrNameTest = "Not Included Ingredient"; var deletedIngredientName = "Deleted Ingredient"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var includedIngredient = new Ingredient { Name = includedIngrNameTest, Unit = ingrUnitTest }; var notIncludedIngredient = new Ingredient { Name = notIncludedIngrNameTest, Unit = ingrUnitTest }; var deletedIngredient = new Ingredient { Name = deletedIngredientName, Unit = ingrUnitTest, IsDeleted = true }; var cocktail = new Cocktail { Name = cocktailNameTest, ImagePath = imageURLTest, }; var options = TestUtilities.GetOptions(nameof(ReturnListOfNotUsedIngredientsInCocktail)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.Add(new CocktailIngredient { Cocktail = cocktail, Ingredient = includedIngredient, Quatity = quantityTest }); arrangeContext.Ingredients.AddRange(new List <Ingredient> { notIncludedIngredient, deletedIngredient }); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CocktailMagicianDb(options)) { var cocktailId = await assertContext.Cocktails.Where(c => c.Name == cocktailNameTest).Select(c => c.Id).FirstAsync(); var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); var listOfIngredients = await sut.GetAllNotIncludedIngredientsDTOAsync(cocktailId); Assert.AreEqual(1, listOfIngredients.Count()); Assert.IsTrue(listOfIngredients.Any(i => i.Name == notIncludedIngrNameTest)); }; }
public async Task ReturnCount_WhenFilterByMultipleParameters() { var cocktailFactoryMock = new Mock <ICocktailFactory>(); var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>(); var barCocktailFactoryMock = new Mock <IBarCocktailFactory>(); var cocktail1NameTest = "abCd"; var cocktail2NameTest = "ghjg"; var cocktail3NameTest = "Bcgh"; var cocktail4NameTest = "kjgh"; var imageURLTest = "https://www.google.com/"; var ingr1Name = "Ingr1"; var ingr2Name = "Ingr2"; var ingr3Name = "Ingr3"; var ingrUnitTest = "Unit"; var quantityTest = 0.5; var ingredient1 = new Ingredient { Name = ingr1Name, Unit = ingrUnitTest }; var ingredient2 = new Ingredient { Name = ingr2Name, Unit = ingrUnitTest }; var ingredient3 = new Ingredient { Name = ingr3Name, Unit = ingrUnitTest }; var ingredientToSearch = ingredient2; var substringToSearh = "BC"; var minRatingToSearch = 4; var cocktail1 = new Cocktail { Name = cocktail1NameTest, ImagePath = imageURLTest, CocktailReviews = new List <CocktailReview> { new CocktailReview { Rating = 3 } } }; var cocktail2 = new Cocktail { Name = cocktail2NameTest, ImagePath = imageURLTest, CocktailReviews = new List <CocktailReview> { new CocktailReview { Rating = 4 } } }; var cocktail3 = new Cocktail { Name = cocktail3NameTest, ImagePath = imageURLTest, CocktailReviews = new List <CocktailReview> { new CocktailReview { Rating = 4 } } }; var cocktail4 = new Cocktail { Name = cocktail4NameTest, ImagePath = imageURLTest, CocktailReviews = new List <CocktailReview> { new CocktailReview { Rating = 5 } } }; var options = TestUtilities.GetOptions(nameof(ReturnCount_WhenFilterByMultipleParameters)); using (var arrangeContext = new CocktailMagicianDb(options)) { arrangeContext.CocktailIngredients.AddRange(new List <CocktailIngredient> { new CocktailIngredient { Cocktail = cocktail1, Ingredient = ingredient1, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail2, Ingredient = ingredient1, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail2, Ingredient = ingredient2, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail3, Ingredient = ingredient2, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail4, Ingredient = ingredient2, Quatity = quantityTest }, new CocktailIngredient { Cocktail = cocktail4, Ingredient = ingredient3, Quatity = quantityTest } }); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CocktailMagicianDb(options)) { var ingredientId = await assertContext.Ingredients.Where(i => i.Name == ingr2Name).Select(i => i.Id).FirstAsync(); var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object); var DTOTest = new CocktailSearchDTO { NameKey = substringToSearh, IngredientId = ingredientId, MinRating = minRatingToSearch }; var resultCount = await sut.SerchResultCountAsync(DTOTest); Assert.AreEqual(1, resultCount); } }
public async Task CorrectlyLoadAllDependenciesForCocktails_WhenCalled() { var sortOrder = "name_desc"; var user = new AppUser() { Id = "1", UserName = "******" }; var review = new CocktailReview() { Id = "11", User = user, Rating = 10f }; var reviews = new List <CocktailReview>(); reviews.Add(review); var options = TestUtils.GetOptions(nameof(CorrectlyLoadAllDependenciesForCocktails_WhenCalled)); var cocktailId = "15"; var barId = "51"; var barName = "Fofo"; var cocktailComponentId = "15"; var ingredientId = "15"; var ingredientName = "Bira"; var newIngredient = new Ingredient() { Id = ingredientId, Name = ingredientName }; var newCocktailComponent = new CocktailComponent() { Id = cocktailComponentId, IngredientId = ingredientId, Ingredient = newIngredient }; var listComponents = new List <CocktailComponent>(); listComponents.Add(newCocktailComponent); var newBar = new Bar() { Id = barId, Name = barName }; var newBarCocktail = new BarCocktail() { BarId = barId, Bar = newBar, CocktailId = cocktailId }; var barCocktails = new List <BarCocktail>(); barCocktails.Add(newBarCocktail); var newCocktail = new Cocktail() { Id = cocktailId, CocktailComponents = listComponents, BarCocktails = barCocktails, Reviews = reviews }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Add(user); arrangeContext.Add(review); arrangeContext.Add(newIngredient); arrangeContext.Add(newBar); arrangeContext.Add(newBarCocktail); arrangeContext.Add(newCocktailComponent); arrangeContext.Add(newCocktail); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new CocktailServices(assertContext, _fileUploadService.Object, _ingredientServices.Object, _recipeServices.Object); var result = await sut.GetFiveSortedCocktailsAsync(sortOrder); Assert.AreEqual(cocktailId, result.ToList()[0].Id); Assert.AreEqual(barId, result.ToList()[0].BarCocktails[0].BarId); Assert.AreEqual(barName, result.ToList()[0].BarCocktails[0].Bar.Name); Assert.AreEqual(ingredientName, result.ToList()[0].Ingredients[0].Ingredient); Assert.AreEqual("pesho", result.ToList()[0].CocktailReviews.ToList()[0].User.UserName); Assert.AreEqual(10, result.ToList()[0].CocktailReviews.ToList()[0].Rating); } }