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);
            }
        }
Пример #5
0
        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>));
            }
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
            }
        }
Пример #13
0
        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));
            }
        }
Пример #16
0
        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);
            }
        }
Пример #18
0
        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));
            }
        }
Пример #21
0
        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
                }));
            };
        }
Пример #22
0
        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));
            };
        }
Пример #24
0
        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);
            }
        }
Пример #25
0
        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));
            }
        }
Пример #26
0
        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));
            }
        }
Пример #27
0
        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);
            }
        }
Пример #28
0
        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));
            };
        }
Пример #29
0
        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);
            }
        }