public async Task CorrectlyRemoveCocktailsWhen_ParamsAreValid()
        {
            //Arrange
            var options            = TestUtilities.GetOptions(nameof(CorrectlyRemoveCocktailsWhen_ParamsAreValid));
            var mapperMock         = new Mock <IDtoMapper <Bar, BarDto> >();
            var searchMapperMock   = new Mock <IDtoMapper <Bar, SearchBarDto> >();
            var cocktailMapperMock = new Mock <IDtoMapper <Cocktail, CocktailDto> >();
            var testGuid           = Guid.NewGuid();
            var cocktailGuid       = Guid.NewGuid();

            var bar1 = new Bar
            {
                Id   = testGuid,
                Name = "testBar1",
            };

            var barDto1 = new BarDto
            {
                Id   = testGuid,
                Name = "testBar1",
            };

            var list = new List <string> {
                "Boza"
            };

            var cocktail = new Cocktail {
                Id = cocktailGuid, Name = "Boza"
            };
            var barCocktail = new BarCocktail {
                BarId = bar1.Id, CocktailId = cocktailGuid
            };

            mapperMock.Setup(x => x.MapFrom(It.IsAny <Bar>())).Returns(barDto1);

            using (var arrangeContext = new CWContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar1);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut    = new BarService(assertContext, mapperMock.Object, searchMapperMock.Object, cocktailMapperMock.Object);
                var result = await sut.RemoveCocktailsAsync(barDto1, list);

                var barCocktailEntity = await assertContext.BarCocktails.FirstAsync();

                Assert.IsInstanceOfType(result, typeof(BarDto));
                Assert.AreEqual("testBar1", result.Name);
                Assert.AreEqual(true, barCocktailEntity.IsDeleted);
            }
        }
        public async Task CorrectlyLoadAllDependenciesForLoadedCocktails_WhenCalledForHomePage()
        {
            var options             = TestUtils.GetOptions(nameof(CorrectlyLoadAllDependenciesForLoadedCocktails_WhenCalledForHomePage));
            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
            };

            using (var arrangeContext = new CMContext(options))
            {
                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.GetCocktailsForHomePage();

                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);
            }
        }
Esempio n. 3
0
        public BarCocktail Create(int barId, int cocktailId)
        {
            var barCocktail = new BarCocktail
            {
                BarId      = barId,
                CocktailId = cocktailId
            };

            return(barCocktail);
        }
Esempio n. 4
0
        public static BarCocktail ToEntity(this BarCocktailDTO barCocktail)
        {
            var barCocktailDTO = new BarCocktail
            {
                BarId      = barCocktail.BarId,
                CocktailId = barCocktail.CocktailId
            };

            return(barCocktailDTO);
        }
Esempio n. 5
0
        public static BarCocktail ToEditEntity(this BarCocktailEditDTO barCocktail)
        {
            var barCocktailDTO = new BarCocktail
            {
                Bar      = barCocktail.Bar,
                Cocktail = barCocktail.Cocktail
            };

            return(barCocktailDTO);
        }
        public async Task AddCocktailToBar_Throws_When_Cocktail_IsAreadyListed()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(AddCocktailToBar_Throws_When_Cocktail_IsAreadyListed));


            var bar = new Bar
            {
                Id      = Guid.NewGuid(),
                Name    = "Cosmos",
                Country = new Country
                {
                    Id   = Guid.NewGuid(),
                    Name = "Bulgaria"
                }
            };

            var cocktail = new Cocktail
            {
                Id   = Guid.NewGuid(),
                Name = "Manhattan",
            };

            var cocktailDTO = new CocktailDTO
            {
                Id   = cocktail.Id,
                Name = cocktail.Name,
            };

            var barCocktail = new BarCocktail
            {
                BarId      = bar.Id,
                CocktailId = cocktail.Id,
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }


            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new BarServices(assertContext);

                await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.AddCocktailToBar(bar.Id, cocktailDTO.Id));
            }
        }
Esempio n. 7
0
        public static BarCocktailDTO ToDTO(this BarCocktail barCocktail)
        {
            var barCocktailDTO = new BarCocktailDTO
            {
                BarId        = barCocktail.BarId,
                CocktailId   = barCocktail.CocktailId,
                CocktailName = barCocktail.Cocktail.Name
            };

            return(barCocktailDTO);
        }
        public async Task RemoveCocktailFromBar_Throws_When_Cocktail_NotFound_AtThisBar()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(RemoveCocktailFromBar_Throws_When_Cocktail_NotFound_AtThisBar));


            var bar = new Bar
            {
                Id      = Guid.Parse("86cb5331-0035-4a52-b99b-08df779358e3"),
                Name    = "Cosmos",
                Country = new Country
                {
                    Id   = Guid.Parse("fb837576-a066-43a1-9812-3c1eac4d449c"),
                    Name = "Bulgaria"
                }
            };

            var cocktail = new Cocktail
            {
                Id   = Guid.Parse("bb4b4175-81c5-4828-bca4-3660f796eb3f"),
                Name = "Manhattan",
            };

            var cocktailDTO = new CocktailDTO
            {
                Id   = cocktail.Id,
                Name = cocktail.Name,
            };

            var barCocktail = new BarCocktail
            {
                Id         = Guid.Parse("ca28a84e-1885-4d1b-aee9-3ab4f9ade0f7"),
                CocktailId = cocktail.Id
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }

            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new BarServices(assertContext);

                await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.RemoveCocktailFromBar(bar.Id, cocktailDTO.Id));
            }
        }
Esempio n. 9
0
        public static BarCocktailEditDTO ToEditDTO(this BarCocktail barCocktail)
        {
            var barCocktailDTO = new BarCocktailEditDTO
            {
                BarId      = barCocktail.BarId,
                Bar        = barCocktail.Bar,
                CocktailId = barCocktail.CocktailId,
                Cocktail   = barCocktail.Cocktail
            };

            return(barCocktailDTO);
        }
Esempio n. 10
0
        public async Task GetCocktailsForBar_Returns_Correct()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(GetCocktailsForBar_Returns_Correct));

            var bar = new Bar
            {
                Id      = Guid.NewGuid(),
                Name    = "Cosmos",
                Address = "Sofia",
                Rating  = 2,
                Country = new Country {
                    Name = "Bulgaria"
                }
            };
            var cocktail = new Cocktail {
                Id = Guid.NewGuid(), Name = "Manhattan"
            };
            var cocktail2 = new Cocktail {
                Id = Guid.NewGuid(), Name = "Cosmopolitan"
            };
            var barCocktail = new BarCocktail {
                BarId = bar.Id, CocktailId = cocktail.Id
            };
            var barCocktail2 = new BarCocktail {
                BarId = bar.Id, CocktailId = cocktail2.Id
            };


            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar);

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

                await arrangeContext.BarCocktails.AddRangeAsync(barCocktail, barCocktail2);

                await arrangeContext.SaveChangesAsync();
            }
            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new BarServices(assertContext);
                var result = await sut.GetCocktailsForBar(bar.Id);

                Assert.AreEqual(2, result.Count());
                Assert.AreEqual(barCocktail.CocktailId, result.ToList()[0].CocktailId);
                Assert.AreEqual(barCocktail.BarId, result.ToList()[0].BarId);
                Assert.AreEqual(barCocktail2.BarId, result.ToList()[1].BarId);
                Assert.AreEqual(barCocktail2.BarId, result.ToList()[1].BarId);
                Assert.IsInstanceOfType(result, typeof(ICollection <BarCocktailDTO>));
            }
        }
        public static BarCocktailDTO BarCocktailMapToDTO(this BarCocktail barCocktail)
        {
            var barCocktailDTO = new BarCocktailDTO();

            barCocktailDTO.BarId        = barCocktail.BarId;
            barCocktailDTO.BarName      = barCocktail.Bar.Name;
            barCocktailDTO.CocktailId   = barCocktail.CocktailId;
            barCocktailDTO.CocktailName = barCocktail.Cocktail.Name;
            barCocktailDTO.UnlistedOn   = barCocktail.UnlistedOn;

            return(barCocktailDTO);
        }
        public async Task ThrowWhen_IngredientNotFound()
        {
            //Arrange
            var options            = TestUtilities.GetOptions(nameof(ThrowWhen_IngredientNotFound));
            var mapperMock         = new Mock <IDtoMapper <Bar, BarDto> >();
            var searchMapperMock   = new Mock <IDtoMapper <Bar, SearchBarDto> >();
            var cocktailMapperMock = new Mock <IDtoMapper <Cocktail, CocktailDto> >();
            var testGuid           = Guid.NewGuid();
            var cocktailGuid       = Guid.NewGuid();

            var bar1 = new Bar
            {
                Id   = testGuid,
                Name = "testBar1",
            };

            var barDto1 = new BarDto
            {
                Id   = testGuid,
                Name = "testBar1",
            };

            var list = new List <string> {
                "Banica"
            };

            var cocktail = new Cocktail {
                Id = cocktailGuid, Name = "Boza"
            };
            var barCocktail = new BarCocktail {
                BarId = bar1.Id, CocktailId = cocktailGuid
            };

            mapperMock.Setup(x => x.MapFrom(It.IsAny <Bar>())).Returns(barDto1);

            using (var arrangeContext = new CWContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar1);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new BarService(assertContext, mapperMock.Object, searchMapperMock.Object, cocktailMapperMock.Object);
                await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.RemoveCocktailsAsync(barDto1, list));
            }
        }
        public async Task Return_True_If_Bar_Has_Cocktail()
        {
            var options = Utils.GetOptions(nameof(Return_True_If_Bar_Has_Cocktail));

            var bar = new Bar()
            {
                Id          = Guid.Parse("1f573fa6-3cc0-48ad-8850-ee7675cc3096"),
                Name        = "Konyushnite",
                Phone       = "0899516116",
                Website     = "-",
                Description = "Live music",
                CityId      = Guid.Parse("e3e92ad8-b117-42a8-b263-ec351d9234fc"),
                Address     = "40 Saborna Str."
            };

            var cocktail = new Cocktail
            {
                Id          = Guid.Parse("9ef97551-87f6-40ce-a88b-6c0e876ccb51"),
                Name        = "Margarita",
                Description = "The Margarita is one of the most " +
                              "popular cocktails in North America—for good reason. " +
                              "Combining the tang of lime and the sweetness of o" +
                              "range liqueur with the distinctive strength of " +
                              "tequila, our classic Margarita strikes all of the right keys."
            };

            var barCocktail = new BarCocktail
            {
                CocktailId = cocktail.Id,
                BarId      = bar.Id,
                UnlistedOn = null
            };

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Bars.Add(bar);
                arrangeContext.Cocktails.Add(cocktail);
                arrangeContext.BarCocktails.Add(barCocktail);

                arrangeContext.SaveChanges();
            }

            using (var assertContext = new CMContext(options))
            {
                var sut    = new CocktailService(assertContext);
                var result = await sut.IsCocktailAvailableInBar(barCocktail.BarId, barCocktail.CocktailId);

                Assert.IsTrue(result);
            }
        }
Esempio n. 14
0
        public async Task <CocktailDto> AddBarsAsync(CocktailDto cocktailDto, List <string> selectedBars)
        {
            var cocktail = await this.context.Cocktails
                           .Where(b => b.IsDeleted == false)
                           .FirstOrDefaultAsync(b => b.Id == cocktailDto.Id);

            if (cocktail == null)
            {
                throw new BusinessLogicException(ExceptionMessages.CocktailNull);
            }

            if (!selectedBars.Any())
            {
                throw new BusinessLogicException(ExceptionMessages.BarNull);
            }

            foreach (var item in selectedBars)
            {
                var bar = await this.context.Bars
                          .Where(c => c.IsDeleted == false)
                          .FirstOrDefaultAsync(c => c.Name == item) ?? throw new BusinessLogicException(ExceptionMessages.BarNull);

                var barCocktail = await this.context.BarCocktails
                                  .Where(c => c.BarId == bar.Id && c.CocktailId == cocktail.Id)
                                  .FirstOrDefaultAsync();

                if (barCocktail == null)
                {
                    barCocktail = new BarCocktail
                    {
                        Bar      = bar,
                        Cocktail = cocktail,
                    };
                    await this.context.BarCocktails.AddAsync(barCocktail);

                    bar.BarCocktails.Add(barCocktail);
                    cocktail.BarCocktails.Add(barCocktail);
                }
                else
                {
                    barCocktail.IsDeleted = false;
                    barCocktail.DeletedOn = DateTime.MinValue;
                }
            }

            await this.context.SaveChangesAsync();

            return(cocktailDto);
        }
        public async Task <BarCocktail> CreateAsync(Bar bar, Cocktail cocktail)
        {
            var barCocktail = new BarCocktail
            {
                Bar        = bar,
                BarID      = bar.Id,
                Cocktail   = cocktail,
                CocktailID = cocktail.Id
            };

            await _context.BarCocktail.AddAsync(barCocktail);

            await _context.SaveChangesAsync();

            return(barCocktail);
        }
Esempio n. 16
0
        public async Task Return_Correct_Cocktail_WhenParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Return_Correct_Cocktail_WhenParamsAreValid));
            var mockCocktailDtoMapper         = new Mock <IDtoMapper <Cocktail, CocktailDto> >();
            var mockCocktailIngretientService = new Mock <ICocktailIngredientService>();
            var mockIngredientsService        = new Mock <IIngredientService>();
            var mockDateTimeProvider          = new Mock <IDateTimeProvider>();

            var bar = new Bar {
                Id = 1
            };
            var cocktail = new Cocktail {
                Id = 1, Name = "TestCocktail"
            };
            var barCocktail = new BarCocktail {
                BarId = 1, CocktailId = 1
            };
            var cocktailDto = new CocktailDto
            {
                Id   = 1,
                Name = "TestCocktail",
            };

            mockCocktailDtoMapper.Setup(x => x.MapDto(It.IsAny <Cocktail>())).Returns(cocktailDto);
            using (var arrangeContext = new CocktailMagicianContext(options))
            {
                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.SaveChangesAsync();
            }
            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new CocktailService(assertContext, mockCocktailDtoMapper.Object, mockDateTimeProvider.Object, mockCocktailIngretientService.Object, mockIngredientsService.Object);
                var result = await sut.GetBarCocktailsAsync(1);

                Assert.IsInstanceOfType(result, typeof(ICollection <CocktailDto>));
                Assert.AreEqual(1, result.First().Id);
                Assert.AreEqual("TestCocktail", result.First().Name);
            }
        }
        public async Task GetBarsOfCocktail_Returns_Correct()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(GetBarsOfCocktail_Returns_Correct));

            var cocktail = new Cocktail {
                Id = Guid.NewGuid(), Name = "Cuba Libre"
            };
            var bar = new Bar {
                Id = Guid.NewGuid(), Name = "Rabbit Hole"
            };
            var bar2 = new Bar {
                Id = Guid.NewGuid(), Name = "Cosmos"
            };

            var barCocktail = new BarCocktail {
                BarId = bar.Id, CocktailId = cocktail.Id, IsListed = true
            };
            var barCocktail2 = new BarCocktail {
                BarId = bar2.Id, CocktailId = cocktail.Id, IsListed = true
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.Bars.AddRangeAsync(bar, bar2);

                await arrangeContext.BarCocktails.AddRangeAsync(barCocktail, barCocktail2);

                await arrangeContext.SaveChangesAsync();
            }
            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new CocktailServices(assertContext);
                var result = await sut.GetBarsOfCocktail(cocktail.Id);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual(barCocktail.BarId, result.ToList()[0].BarId);
                Assert.AreEqual(barCocktail.CocktailId, result.ToList()[0].CocktailId);
                Assert.AreEqual(barCocktail2.BarId, result.ToList()[1].BarId);
                Assert.AreEqual(barCocktail2.CocktailId, result.ToList()[1].CocktailId);
                Assert.IsInstanceOfType(result, typeof(ICollection <BarCocktailDTO>));
            }
        }
Esempio n. 18
0
        public async Task AddCocktailToBarAsync_Existing_Combination_Correct()
        {
            //Arrange
            var options        = Utils.GetOptions(nameof(AddCocktailToBarAsync_Existing_Combination_Correct));
            var barId          = Guid.Parse("92a05c62-6f33-4dc9-bcc1-c9c946bf693a");
            var cocktailId     = Guid.Parse("9ef97551-87f6-40ce-a88b-6c0e876ccb51");
            var dateUnlistedOn = new DateTime(2020, 05, 01);

            var bar = new Bar()
            {
                Id      = barId,
                Name    = "Just another bar",
                Phone   = "0898878465",
                CityId  = Guid.Parse("cc44371d-594f-4c47-a82b-e606bede8d3b"), //Varna
                Address = "62 Prof. Marin Drinov Str.",
            };
            var cocktail = new Cocktail()
            {
                Id   = Guid.Parse("9ef97551-87f6-40ce-a88b-6c0e876ccb51"),
                Name = "Margarita",
            };
            var barCocktails = new BarCocktail()
            {
                BarId      = barId,
                CocktailId = cocktailId,
                UnlistedOn = dateUnlistedOn
            };

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Bars.Add(bar);
                arrangeContext.Cocktails.Add(cocktail);
                arrangeContext.BarCocktails.Add(barCocktails);
                await arrangeContext.SaveChangesAsync();
            }
            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut     = new BarService(assertContext);
                var result1 = await sut.AddCocktailToBarAsync(barId, cocktailId);

                var result2 = assertContext.BarCocktails.Any(bc => bc.BarId == barId && bc.CocktailId == cocktailId && bc.UnlistedOn == null);
                Assert.IsTrue(result1);
                Assert.IsTrue(result2);
            }
        }
Esempio n. 19
0
        public async Task AvailabilityAtBar_Return_Correct()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(AvailabilityAtBar_Return_Correct));

            var bar = new Bar
            {
                Id      = Guid.NewGuid(),
                Name    = "Manhattan",
                Country = new Country  {
                    Id = Guid.NewGuid(), Name = "USA"
                }
            };
            var cocktail = new Cocktail {
                Id = Guid.NewGuid(), Name = "Cosmopolitan"
            };

            var barCocktail2 = new BarCocktail {
                BarId = Guid.NewGuid(), CocktailId = cocktail.Id
            };
            var barCocktail = new BarCocktail {
                BarId = bar.Id, CocktailId = cocktail.Id, IsListed = true
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.BarCocktails.AddRangeAsync(barCocktail, barCocktail2);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.SaveChangesAsync();
            }

            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new BarServices(assertContext);
                var result = await sut.AvailabilityAtBar(bar.Id);

                Assert.AreEqual(1, result.Count());
                Assert.AreEqual(result.ToList()[0].BarId, bar.Id);
            }
        }
        public async Task <BarCocktail> CreateBarCocktail(int barId, int cocktailId)
        {
            if (barId < 1 || cocktailId < 1)
            {
                return(null);
            }
            var barCocktail = new BarCocktail
            {
                BarId      = barId,
                CocktailId = cocktailId,
            };

            await this.contex.BarCocktails.AddAsync(barCocktail);

            await this.contex.SaveChangesAsync();

            return(barCocktail);
        }
Esempio n. 21
0
        public GetBarForDetails_Should()
        {
            barForTest = new Bar()
            {
                BarId         = "One",
                Address       = "Solunska 2",
                Information   = "Information",
                MapDirections = "Go south",
                Name          = "Bar",
                Picture       = "Picture"
            };

            user = new User()
            {
                Id       = "One",
                UserName = "******"
            };

            cocktail = new Cocktail()
            {
                Id   = "One",
                Name = "Cocktail"
            };

            barCocktail = new BarCocktail()
            {
                BarId      = barForTest.BarId,
                Bar        = barForTest,
                CocktailId = cocktail.Id,
                Cocktail   = cocktail
            };

            barReview = new BarReview()
            {
                BarId     = barForTest.BarId,
                Bar       = barForTest,
                Comment   = "Comment",
                CreatedOn = DateTime.MinValue,
                Grade     = 5d,
                UserId    = user.Id,
                User      = user
            };
        }
        public static BarCocktailDTO GetDTO(this BarCocktail barCocktail)
        {
            if (barCocktail == null)
            {
                throw new ArgumentNullException();
            }

            return(new BarCocktailDTO
            {
                BarId = barCocktail.BarId,
                Bar = barCocktail.Bar,
                CocktailId = barCocktail.CocktailId,
                Cocktail = barCocktail.Cocktail,
                IsListed = barCocktail.IsListed,
                IsDeleted = barCocktail.IsDeleted,
                DeletedOn = barCocktail.DeletedOn,
                ListedOn = barCocktail.ListedOn,
                UnlistedOn = barCocktail.UnlistedOn,
                ModifiedOn = barCocktail.ModifiedOn
            });
        }
Esempio n. 23
0
        public async Task <bool> AddCocktailToBarAsync(Guid barId, Guid cocktailId)
        {
            if (!await _cmContext.Cocktails.AnyAsync(c => c.UnlistedOn == null && c.Id == cocktailId))
            {
                throw new ArgumentNullException("Cocktail is not available.");
            }
            if (!await _cmContext.Bars.AnyAsync(b => b.UnlistedOn == null && b.Id == barId))
            {
                throw new ArgumentNullException("Bar is not available.");
            }
            var barCocktail = await _cmContext.BarCocktails
                              .Where(bc => bc.BarId == barId && bc.CocktailId == cocktailId)
                              .FirstOrDefaultAsync();

            if (barCocktail == null)
            {
                var barCocktailNew = new BarCocktail()
                {
                    BarId      = barId,
                    CocktailId = cocktailId
                };
                _cmContext.BarCocktails.Add(barCocktailNew);
            }
            else if (barCocktail.UnlistedOn != null)
            {
                barCocktail.UnlistedOn = null;
            }
            if (_cmContext.ChangeTracker.HasChanges())
            {
                try
                {
                    await _cmContext.SaveChangesAsync();
                }
                catch (Exception)
                {
                    throw;
                }
            }
            return(true);
        }
Esempio n. 24
0
        public async Task AddCocktailBarAsync(int barId, int cocktailId)
        {
            var bar = await FindBarByIdAsync(barId);

            var cocktail = await cocktailService.FindCocktailByIdAsync(cocktailId);

            if (bar != null && cocktail != null)
            {
                var barCocktail = new BarCocktail()
                {
                    Bar          = bar,
                    Cocktail     = cocktail,
                    CocktailName = cocktail.Name,
                    BarName      = bar.Name
                };
                await dbContext.BarCocktail.AddAsync(barCocktail);

                await dbContext.SaveChangesAsync();
            }
            await nService.FavBarNotificationAsync(bar.Name, cocktail.Name);

            await nService.FavCocktailNotificationAsync(bar.Name, cocktail.Name, bar.City.Name);
        }
        public async Task AddCocktailToBar_Throws_When_BarCocktail_IsNotNull()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(AddCocktailToBar_Throws_When_BarCocktail_IsNotNull));

            var barID      = Guid.NewGuid();
            var cocktailId = Guid.NewGuid();


            var barCocktail = new BarCocktail
            {
                BarId      = barID,
                CocktailId = cocktailId
            };

            var cocktailDTO = new CocktailDTO
            {
                Id   = cocktailId,
                Name = "Manhattan"
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }

            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new BarServices(assertContext);

                await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.AddCocktailToBar(barID, cocktailDTO.Id));
            }
        }
Esempio n. 26
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);
            }
        }
        public void ReturnCollectionOfCorrectCocktailNames()
        {
            // Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCollectionOfCorrectCocktailNames));


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

                var bar = new Bar
                {
                    Name = "Barsy",
                    Id   = 1
                };

                var cocktail1 = new Cocktail
                {
                    Name = "Mojito1",
                    Id   = 1
                };

                var cocktail2 = new Cocktail
                {
                    Name = "Mojito2",
                    Id   = 2
                };

                var cocktail3 = new Cocktail
                {
                    Name = "Mojito3",
                    Id   = 3
                };

                var pair1 = new BarCocktail
                {
                    Bar        = bar,
                    BarID      = bar.Id,
                    Cocktail   = cocktail1,
                    CocktailID = cocktail1.Id
                };
                var pair2 = new BarCocktail
                {
                    Bar        = bar,
                    BarID      = bar.Id,
                    Cocktail   = cocktail2,
                    CocktailID = cocktail2.Id
                };
                var pair3 = new BarCocktail
                {
                    Bar        = bar,
                    BarID      = bar.Id,
                    Cocktail   = cocktail3,
                    CocktailID = cocktail3.Id
                };

                assertContext.BarCocktail.Add(pair1);
                assertContext.BarCocktail.Add(pair2);
                assertContext.BarCocktail.Add(pair3);
                assertContext.SaveChanges();

                var result = sut.LoadMoreCocktails(1, bar.Id).GetAwaiter().GetResult();

                Assert.IsTrue(result.Count == 2 && result[0] == cocktail2.Name && result[1] == cocktail3.Name);
            }
        }
        public async Task ReturnCorrectDtoWhen_ParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCorrectDtoWhen_ParamsAreValid));

            var mapperMock                = new Mock <IDtoMapper <Cocktail, CocktailDto> >();
            var barMapperMock             = new Mock <IDtoMapper <Bar, BarDto> >();
            var cocktailDetailsMapperMock = new Mock <IDtoMapper <Cocktail, DetailsCocktailDto> >();
            var ingredientMapperMock      = new Mock <IDtoMapper <Ingredient, IngredientDto> >();

            var ingredientServiceMock         = new Mock <IIngredientService>();
            var cocktailIngredientServiceMock = new Mock <ICocktailIngredientService>();

            var testGuid = Guid.NewGuid();
            var barGuid  = Guid.NewGuid();

            var cocktail = new Cocktail
            {
                Id        = testGuid,
                Name      = "TestOneName",
                ImagePath = "ImagePathOne"
            };

            var cocktailDto = new DetailsCocktailDto
            {
                Id            = testGuid,
                Name          = "TestOneName",
                ImagePath     = "ImagePathOne",
                AverageRating = 2,
                Info          = "testInfo"
            };

            var bar = new Bar
            {
                Id   = barGuid,
                Name = "testName"
            };

            var barCocktail = new BarCocktail
            {
                Bar      = bar,
                Cocktail = cocktail,
            };

            cocktailDetailsMapperMock.Setup(x => x.MapFrom(It.IsAny <Cocktail>())).Returns(cocktailDto);

            using (var arrangeContext = new CWContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new CocktailService(assertContext, mapperMock.Object, barMapperMock.Object, cocktailDetailsMapperMock.Object,
                                              ingredientServiceMock.Object, cocktailIngredientServiceMock.Object);
                var result = await sut.GetCocktailBarsAsync(testGuid);

                Assert.IsInstanceOfType(result, typeof(DetailsCocktailDto));
                Assert.AreEqual("TestOneName", result.Name);
            }
        }
        public async Task CorrectlyRemoveBarsWhen_ParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(CorrectlyRemoveBarsWhen_ParamsAreValid));
            var mapper  = new CocktailDtoMapper();

            var mapperMock                = new Mock <IDtoMapper <Cocktail, CocktailDto> >();
            var barMapperMock             = new Mock <IDtoMapper <Bar, BarDto> >();
            var cocktailDetailsMapperMock = new Mock <IDtoMapper <Cocktail, DetailsCocktailDto> >();

            var ingredientServiceMock         = new Mock <IIngredientService>();
            var cocktailIngredientServiceMock = new Mock <ICocktailIngredientService>();

            var guid    = Guid.NewGuid();
            var barGuid = Guid.NewGuid();

            var cocktail = new Cocktail
            {
                Id   = guid,
                Name = "testCocktail",
                Info = "testCocktailInfo",
            };

            var entityDto = new CocktailDto
            {
                Id   = guid,
                Name = "testCocktail",
                Info = "testInfo",
            };

            var list = new List <string> {
                "Baileys"
            };

            var bar = new Bar {
                Id = barGuid, Name = "Baileys"
            };
            var barCocktail = new BarCocktail {
                BarId = barGuid, CocktailId = cocktail.Id
            };

            mapperMock.Setup(x => x.MapFrom(It.IsAny <Cocktail>())).Returns(entityDto);

            using (var arrangeContext = new CWContext(options))
            {
                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.BarCocktails.AddAsync(barCocktail);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new CocktailService(assertContext, mapperMock.Object, barMapperMock.Object,
                                              cocktailDetailsMapperMock.Object, ingredientServiceMock.Object, cocktailIngredientServiceMock.Object);

                var result = await sut.RemoveBarsAsync(entityDto, list);

                var barCocktailEntity = await assertContext.BarCocktails.FirstAsync();

                Assert.IsInstanceOfType(result, typeof(CocktailDto));
                Assert.AreEqual("testCocktail", result.Name);
                Assert.AreEqual(true, barCocktailEntity.IsDeleted);
            }
        }
        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);
            }
        }