コード例 #1
0
        public async Task MakeInstance_OfTypeIngredientService_WhenValidValuesPassed()
        {
            var options = TestUtils.GetOptions(nameof(MakeInstance_OfTypeIngredientService_WhenValidValuesPassed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);
                Assert.IsInstanceOfType(sut, typeof(IngredientServices));
            }
        }
コード例 #2
0
        public void ReturnFalseIfSuchIngredientDoesntExist()
        {
            var options = TestUtilities.GetOptions(nameof(ReturnFalseIfSuchIngredientDoesntExist));

            //act & assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut = new IngredientServices(assertContext);
                Assert.IsFalse(sut.IngredientWithThatNameExists("test").GetAwaiter().GetResult());
            }
        }
コード例 #3
0
        public async Task Throw_MagicExeption_IngredientWhitSuchId_DoesNotExist()
        {
            var options = TestUtils.GetOptions(nameof(Throw_MagicExeption_IngredientWhitSuchId_DoesNotExist));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.GetIngredientById("ddd"));
            }
        }
コード例 #4
0
        public async Task Throw_MagicExeption_WhenNullIngredientOccurs()
        {
            var options = TestUtils.GetOptions(nameof(Throw_MagicExeption_WhenNullIngredientOccurs));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.GetIngredientIdByNameAsync("Name"));
            }
        }
コード例 #5
0
        public async Task Throw_MagicExeption_WhenNullIngredientDto_Passed()
        {
            var options = TestUtils.GetOptions(nameof(Throw_MagicExeption_WhenNullIngredientDto_Passed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.EditIngredienAsync(null));
            }
        }
コード例 #6
0
        public async Task Throw_MagicExeption_WhenIngredientWithSuchId_DoesnotExist()
        {
            var options = TestUtils.GetOptions(nameof(Throw_MagicExeption_WhenIngredientWithSuchId_DoesnotExist));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.DeleteIngredientAsync("lll"));
            }
        }
コード例 #7
0
        public async Task ReturnLastPageNotDeletedIngredients()
        {
            var ingredientFactoryMock = new Mock <IIngredientFactory>();

            var ingredient1Name = "Name1";
            var ingredient2Name = "Name2";
            var ingredient3Name = "Name3";

            var deletedIngredientName = "Deleted";
            var ingredientUnit        = "Unit";

            var ingredient1 = new Ingredient
            {
                Name = ingredient1Name,
                Unit = ingredientUnit
            };
            var ingredient2 = new Ingredient
            {
                Name = ingredient2Name,
                Unit = ingredientUnit
            };
            var ingredient3 = new Ingredient
            {
                Name = ingredient3Name,
                Unit = ingredientUnit
            };
            var deletedIngredient = new Ingredient
            {
                Name      = deletedIngredientName,
                Unit      = ingredientUnit,
                IsDeleted = true
            };

            var options = TestUtilities.GetOptions(nameof(ReturnLastPageNotDeletedIngredients));

            using (var arrangeContext = new CocktailMagicianDb(options))
            {
                arrangeContext.Ingredients.AddRange(new List <Ingredient> {
                    ingredient1, ingredient2, ingredient3, deletedIngredient
                });
                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CocktailMagicianDb(options))
            {
                var sut = new IngredientServices(assertContext, ingredientFactoryMock.Object);
                var listOfIngredients = await sut.GetAllPagedDTOAsync(2, 2);

                Assert.AreEqual(1, listOfIngredients.Count());
                Assert.IsFalse(listOfIngredients.Any(i => i.Name == deletedIngredientName));
            }
        }
コード例 #8
0
        public async Task Throw_CorrectMagicMsg_IngredientWhitSuchId_DoesNotExist()
        {
            var options = TestUtils.GetOptions(nameof(Throw_CorrectMagicMsg_IngredientWhitSuchId_DoesNotExist));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.GetIngredientById("ddd"));

                Assert.AreEqual("Ingredient cannot be null!", ex.Message);
            }
        }
コード例 #9
0
        public async Task Throw_CorrectMagicMsg_WhenNullIngredientDtoPassed()
        {
            var options = TestUtils.GetOptions(nameof(Throw_MagicMsg_WhenNullIngredientDtoPassed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.AddIngredient(null));

                Assert.AreEqual("IngredientDto cannot be null!", ex.Message);
            }
        }
コード例 #10
0
        public void CreateNewInstanceOfIngredient()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(CreateNewInstanceOfIngredient));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut        = new IngredientServices(assertContext);
                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                Assert.IsInstanceOfType(ingredient, typeof(Ingredient));
            }
        }
コード例 #11
0
        Return_EmptyIListOf_IfThereIsNoIngredients_WhenPageNumberPassed()
        {
            var options = TestUtils.GetOptions
                              (nameof(Return_EmptyIListOf_IfThereIsNoIngredients_WhenPageNumberPassed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var result = await sut.GetTenIngredientsAsync(2);

                Assert.AreEqual(0, result.Count);
                Assert.IsInstanceOfType(result, typeof(IList <IngredientDTO>));
            }
        }
コード例 #12
0
        public async Task Return_EmptyList_IfThereAreNoIngredients()
        {
            var options = TestUtils.GetOptions
                              (nameof(Return_EmptyList_IfThereAreNoIngredients));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var result = await sut.GetAllIngredients();

                Assert.IsInstanceOfType(result, typeof(IList <IngredientDTO>));
                Assert.AreEqual(result.Count, 0);
            }
        }
コード例 #13
0
        public void ShouldReturnEmptyCollectionIfNoIngredientsAreFound()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ShouldReturnEmptyCollectionIfNoIngredientsAreFound));


            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut    = new IngredientServices(assertContext);
                var result = sut.SearchIngredientsAsync("e").GetAwaiter().GetResult();

                Assert.IsTrue(result.Count == 0);
            }
        }
コード例 #14
0
        public async Task Return_EmptyICollection_IfThereIsNoIngredients()
        {
            var options = TestUtils.GetOptions
                              (nameof(Return_EmptyICollection_IfThereIsNoIngredients));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var result = await sut.GetImagesForHpAsync();

                Assert.AreEqual(0, result.ToList().Count());

                Assert.IsInstanceOfType(result, typeof(ICollection <String>));
            }
        }
        public void ReturnFalseIfTheIngredientIsNotUsedInAnyCocktail()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnFalseIfTheIngredientIsNotUsedInAnyCocktail));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut        = new IngredientServices(assertContext);
                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                var result     = sut.IsIngredientUsedAsync(ingredient.ID).GetAwaiter().GetResult();

                Assert.IsFalse(result);
            }
        }
コード例 #16
0
        public void AddTheIngredientToTheDBSetCOrrectly()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(AddTheIngredientToTheDBSetCOrrectly));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut = new IngredientServices(assertContext);

                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();

                Assert.IsTrue(assertContext.Ingredients.Contains(ingredient));
            }
        }
コード例 #17
0
        public async Task Return_IngredientName_WhenValidIdPassed()
        {
            var options = TestUtils.GetOptions(nameof(Return_IngredientName_WhenValidIdPassed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);
                assertContext.Ingredients.Add(new Ingredient {
                    Id = "1", Name = "target"
                });
                await assertContext.SaveChangesAsync();

                var result = await sut.GetIngredientNameById("1");

                Assert.AreEqual("target", result);
            }
        }
コード例 #18
0
        public async Task ThrowsException_WhenIngredientIsPartOfCocktail()
        {
            var ingredientFactoryMock = new Mock <IIngredientFactory>();

            var ingredientName = "Name";
            var ingredientUnit = "Unit";

            var ingredient = new Ingredient
            {
                Name = ingredientName,
                Unit = ingredientUnit,
            };

            var cocktailNameTest = "TestName";
            var imageURLTest     = "https://www.google.com/";

            var cocktail = new Cocktail
            {
                Name      = cocktailNameTest,
                ImagePath = imageURLTest,
            };

            var ingredientQuantity = 0.5;

            var options = TestUtilities.GetOptions(nameof(ThrowsException_WhenIngredientIsPartOfCocktail));

            using (var arrangeContext = new CocktailMagicianDb(options))
            {
                arrangeContext.CocktailIngredients.Add(new CocktailIngredient
                {
                    Cocktail   = cocktail,
                    Ingredient = ingredient,
                    Quatity    = ingredientQuantity
                });

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CocktailMagicianDb(options))
            {
                var ingredientId = await assertContext.Ingredients.Where(i => i.Name == ingredientName).Select(i => i.Id).FirstAsync();

                var sut = new IngredientServices(assertContext, ingredientFactoryMock.Object);
                await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.DeleteAsync(ingredientId));
            }
        }
コード例 #19
0
        public async Task GetCocktailIngredients_Returns_WhenParamIsValid()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(GetCocktailIngredients_Returns_WhenParamIsValid));

            var ingredient = new Ingredient {
                Id = Guid.NewGuid(), Name = "Vodka"
            };
            var cocktail = new Cocktail {
                Id = Guid.NewGuid(), Name = "Manhattan"
            };
            var cocktail2 = new Cocktail {
                Id = Guid.NewGuid(), Name = "Margarita"
            };
            var cocktailIngredient = new CocktailIngredient {
                IngredientId = ingredient.Id, CocktailId = cocktail.Id
            };
            var cocktailIngredient2 = new CocktailIngredient {
                IngredientId = ingredient.Id, CocktailId = cocktail2.Id
            };


            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Ingredients.AddAsync(ingredient);

                await arrangeContext.Cocktails.AddRangeAsync(cocktail, cocktail2);

                await arrangeContext.CocktailIngredients.AddRangeAsync(cocktailIngredient, cocktailIngredient2);

                await arrangeContext.SaveChangesAsync();
            }

            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new IngredientServices(assertContext);
                var result = await sut.GetCocktailIngredients(cocktail.Id);

                Assert.AreEqual(cocktail.Id, result.ToList()[0].CocktailId);
                Assert.AreEqual(ingredient.Id, result.ToList()[0].IngredientId);
                Assert.AreEqual(ingredient.Name, result.ToList()[0].Ingredient.Name);
                Assert.AreEqual(cocktail.Name, result.ToList()[0].Cocktail.Name);
                Assert.IsInstanceOfType(result, typeof(ICollection <CocktailIngredientDTO>));
            }
        }
コード例 #20
0
        public void DeleteTheDesiredIngredient()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(DeleteTheDesiredIngredient));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut        = new IngredientServices(assertContext);
                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                sut.DeleteAsync(ingredient.Id).GetAwaiter().GetResult();

                Assert.IsNull(assertContext.Ingredients.Find(ingredient.Id));
            }
        }
コード例 #21
0
        public async Task ReturnId_WhenValidIngredientName_Passed()
        {
            var options = TestUtils.GetOptions(nameof(ReturnId_WhenValidIngredientName_Passed));

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);
                assertContext.Ingredients.Add(new Ingredient {
                    Id = "33", Name = "water"
                });
                await assertContext.SaveChangesAsync();

                var result = await sut.GetIngredientIdByNameAsync("water");

                Assert.AreEqual("33", result);
            }
        }
コード例 #22
0
        public void ReturnCollectionOfNullElementsIfThereAreNoMatches()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCollectionOfNullElementsIfThereAreNoMatches));


            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut   = new IngredientServices(assertContext);
                var names = new List <string> {
                    "Rum", "Rum2"
                };
                var result = sut.GetMultipleIngredientsByNameAsync(names).GetAwaiter().GetResult();

                Assert.IsTrue(result.All(e => e == null));
            }
        }
コード例 #23
0
        public void ReturnCorrectIngredient()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCorrectIngredient));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut = new IngredientServices(assertContext);

                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                var result     = sut.GetAsync(ingredient.ID).GetAwaiter().GetResult();

                Assert.AreEqual(ingredient, result);
            }
        }
コード例 #24
0
        public async Task Throw_CorrectMagicExeption_IfYouTryToDeleteIngredient_WichIsPartOfCocktail()
        {
            var options = TestUtils.GetOptions
                              (nameof(Throw_CorrectMagicExeption_IfYouTryToDeleteIngredient_WichIsPartOfCocktail));

            using (var arrangeContext = new CMContext(options))
            {
                //1
                arrangeContext.Cocktails.Add(
                    new Cocktail
                {
                    Id   = "1",
                    Name = "Cocktail"
                });
                arrangeContext.Ingredients.Add(
                    new Ingredient
                {
                    Id   = "1",
                    Name = "target1",
                    CocktailComponents = new List <CocktailComponent>
                    {
                        new CocktailComponent
                        {
                            Id           = "1",
                            Name         = "vodka",
                            IngredientId = "1",
                            CocktailId   = "1"
                        }
                    }
                });

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CMContext(options))
            {
                var sut = new IngredientServices(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.DeleteIngredientAsync("1"));

                Assert.AreEqual("You cannot delete this ingredient", ex.Message);
            }
        }
コード例 #25
0
        public void ReturnTureIfSuchIngredientExists()
        {
            var options    = TestUtilities.GetOptions(nameof(ReturnTureIfSuchIngredientExists));
            var ingredient = new Ingredient
            {
                Id   = 1,
                Name = "test",
            };

            //act & assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut = new IngredientServices(assertContext);
                assertContext.Ingredients.Add(ingredient);
                assertContext.SaveChanges();

                Assert.IsTrue(sut.IngredientWithThatNameExists(ingredient.Name).GetAwaiter().GetResult());
            }
        }
コード例 #26
0
        public void UpdateTheIngredientNameCorrectly()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(UpdateTheIngredientNameCorrectly));

            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut = new IngredientServices(assertContext);

                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                var newName    = "Test12";
                sut.UpdateAsync(ingredient.ID, newName).GetAwaiter().GetResult();

                Assert.AreEqual(newName, ingredient.Name);
            }
        }
コード例 #27
0
        public async Task AddIngredient_ToDb_WhenValidIngredientDtoPassed()
        {
            var options = TestUtils.GetOptions(nameof(AddIngredient_ToDb_WhenValidIngredientDtoPassed));

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new IngredientServices(arrangeContext);

                await sut.AddIngredient(
                    new IngredientDTO
                {
                    Name = "voda",
                });
            }
            using (var assertContext = new CMContext(options))
            {
                Assert.AreEqual("voda", assertContext.Ingredients.First().Name);
            }
        }
コード例 #28
0
        public void ReturnCollectionOfCorrectIngredientsContainingTheSpecifiedChar()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCollectionOfCorrectIngredientsContainingTheSpecifiedChar));


            // Act, Assert
            using (var assertContext = new CocktailDB(options))
            {
                var sut        = new IngredientServices(assertContext);
                var name       = "Rum";
                var type       = "alcohol";
                var ingredient = sut.AddAsync(name, type).GetAwaiter().GetResult();
                name = "Rum2";
                var ingredient2 = sut.AddAsync(name, type).GetAwaiter().GetResult();
                var result      = sut.SearchIngredientsAsync("u").GetAwaiter().GetResult();

                Assert.IsTrue(result.Count == 2 && result.Contains(ingredient) && result.Contains(ingredient));
            }
        }
コード例 #29
0
        public async Task AvailabilityAtCocktails_Returns_Correct()
        {
            //Arrange

            var options = Utils.GetOptions(nameof(AvailabilityAtCocktails_Returns_Correct));

            var cocktail = new Cocktail {
                Id = Guid.NewGuid(), Name = "Cuba Libre"
            };
            var ingredient = new Ingredient {
                Id = Guid.NewGuid(), Name = "Rum", Description = "Alcoholic spirit"
            };
            var cocktailIngredient = new CocktailIngredient {
                CocktailId = cocktail.Id, IngredientId = ingredient.Id, IsDeleted = true
            };


            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Ingredients.AddAsync(ingredient);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.CocktailIngredients.AddAsync(cocktailIngredient);

                await arrangeContext.SaveChangesAsync();
            }

            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new IngredientServices(assertContext);
                var result = await sut.AvailabilityAtCocktails(ingredient.Id);

                Assert.AreEqual(0, result.Count);
                Assert.IsInstanceOfType(result, typeof(ICollection <CocktailIngredientDTO>));
            }
        }
        public async Task ReturnAllNotDeletedIngredientsCount()
        {
            var ingredientFactoryMock = new Mock <IIngredientFactory>();

            var ingredientName        = "Name";
            var deletedIngredientName = "Deleted";
            var ingredientUnit        = "Unit";

            var ingredient = new Ingredient
            {
                Name = ingredientName,
                Unit = ingredientUnit
            };
            var deleteIngredient = new Ingredient
            {
                Name      = deletedIngredientName,
                Unit      = ingredientUnit,
                IsDeleted = true
            };

            var options = TestUtilities.GetOptions(nameof(ReturnAllNotDeletedIngredientsCount));

            using (var arrangeContext = new CocktailMagicianDb(options))
            {
                arrangeContext.Ingredients.AddRange(new List <Ingredient> {
                    ingredient, deleteIngredient
                });
                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CocktailMagicianDb(options))
            {
                var sut   = new IngredientServices(assertContext, ingredientFactoryMock.Object);
                var count = await sut.AllIngredientsCountAsync();

                Assert.AreEqual(1, count);
            }
        }