public void MapFrom_Should_ReturnCorrectInstanceOf_DetailsCocktailViewModel()
        {
            //Arrange
            var sut = new DetailsCocktailViewModelMapper();

            var cocktail = new DetailsCocktailDto
            {
                Id        = Guid.NewGuid(),
                Name      = "testName",
                Info      = "testInfo",
                ImagePath = "testPath",
            };

            //Act
            var result = sut.MapFrom(cocktail);

            //Assert
            Assert.IsInstanceOfType(result, typeof(DetailsCocktailViewModel));
        }
        public void MapFrom_Should_CorrectlyMapRatingFrom_DetailsCocktailDto_To_DetailsCocktailViewModel_WhenCollectionIsNotEmpty()
        {
            //Arrange
            var sut = new DetailsCocktailViewModelMapper();

            var cocktail = new DetailsCocktailDto
            {
                Id            = Guid.NewGuid(),
                Name          = "testName",
                Info          = "testInfo",
                ImagePath     = "testPath",
                AverageRating = 4.55,
            };

            //Act
            var result = sut.MapFrom(cocktail);

            //Assert
            Assert.AreEqual(result.AverageRating, 4.55);
        }
        public void MapFrom_Should_CorrectlyMapFrom_DetailsCocktail_To_DetailsCocktailViewModel()
        {
            //Arrange
            var sut = new DetailsCocktailViewModelMapper();

            var cocktail = new DetailsCocktailDto
            {
                Id        = Guid.NewGuid(),
                Name      = "testName",
                Info      = "testInfo",
                ImagePath = "testPath",
            };

            //Act
            var result = sut.MapFrom(cocktail);

            //Assert
            Assert.AreEqual(result.Id, cocktail.Id);
            Assert.AreEqual(result.Name, cocktail.Name);
            Assert.AreEqual(result.Info, cocktail.Info);
            Assert.AreEqual(result.ImagePath, cocktail.ImagePath);
        }
        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);
            }
        }