Example #1
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 cocktail = new Cocktail
            {
                Name      = cocktailNameTest,
                ImagePath = imageURLTest,
                IsDeleted = true
            };

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

            using (var arrangeContext = new CocktailMagicianDb(options))
            {
                arrangeContext.Cocktails.Add(cocktail);
                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.DeleteAsync(cocktailId));
            };
        }
Example #2
0
        public async Task ThrowException_WhenIdIsInvalid()
        {
            var cocktailFactoryMock           = new Mock <ICocktailFactory>();
            var cocktailIngredinetFactoryMock = new Mock <ICocktailIngredientFactory>();
            var barCocktailFactoryMock        = new Mock <IBarCocktailFactory>();

            var invalidId = 10;

            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
            };

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

            using (var arrangeContext = new CocktailMagicianDb(options))
            {
                arrangeContext.CocktailIngredients.Add(new CocktailIngredient
                {
                    Cocktail   = cocktail,
                    Ingredient = ingredient,
                    Quatity    = quantityTest
                });
                await arrangeContext.SaveChangesAsync();
            }
            using (var assertContext = new CocktailMagicianDb(options))
            {
                var sut = new CocktailServices(assertContext, cocktailFactoryMock.Object, cocktailIngredinetFactoryMock.Object, barCocktailFactoryMock.Object);
                await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.DeleteAsync(invalidId));
            };
        }
Example #3
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));
            }
        }