public async Task <CocktailRatingDto> CreateAsync(CocktailRatingDto tempCocktailRating)
        {
            if (tempCocktailRating == null)
            {
                throw new BusinessLogicException(ExceptionMessages.CocktailRatingNull);
            }

            var cocktailRating = new CocktailRating
            {
                Value      = tempCocktailRating.Value,
                UserId     = tempCocktailRating.UserId,
                CocktailId = tempCocktailRating.CocktailId,
                CreatedOn  = tempCocktailRating.CreatedOn,
                ModifiedOn = tempCocktailRating.ModifiedOn,
                DeletedOn  = tempCocktailRating.DeletedOn,
                IsDeleted  = tempCocktailRating.IsDeleted
            };

            await this.context.CocktailRatings.AddAsync(cocktailRating);

            await this.context.SaveChangesAsync();

            var cocktailRatingDto = this.dtoMapper.MapFrom(cocktailRating);

            return(cocktailRatingDto);
        }
        public async Task Return_Correct_Model_When_ParamsAreValidCocktailRating()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Return_Correct_Model_When_ParamsAreValidCocktailRating));
            var mockDateTimeProvider = new Mock <IDateTimeProvider>();
            var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >();

            var user = new User {
                Id = 1
            };
            var cocktail = new Cocktail {
                Id = 1
            };

            var rating = new CocktailRating
            {
                Id         = 1,
                UserId     = 1,
                CocktailId = 1,
                Value      = 5,
            };
            var ratingDto = new CocktailRatingDto
            {
                Id         = 1,
                UserId     = 1,
                CocktailId = 1,
                Value      = 5,
            };

            mapper.Setup(x => x.MapDto(It.IsAny <CocktailRating>())).Returns(ratingDto);

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

                await arrangeContext.Users.AddAsync(user);

                await arrangeContext.CocktailRatings.AddAsync(rating);

                await arrangeContext.SaveChangesAsync();
            }

            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object);
                var result = await sut.GetRatingAsync(1, 1);

                Assert.IsInstanceOfType(result, typeof(CocktailRatingDto));
                Assert.AreEqual(1, result.Id);
                Assert.AreEqual(1, result.UserId);
                Assert.AreEqual(1, result.CocktailId);
                Assert.AreEqual(5, result.Value);
            }
        }
        public async Task CorrectlyCreateCocktailRating()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(CorrectlyCreateCocktailRating));

            var mapperMock = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >();

            var cocktailId    = Guid.NewGuid();
            var cocktailIdTwo = Guid.NewGuid();
            var userId        = Guid.NewGuid();
            var userIdTwo     = Guid.NewGuid();

            var createdOn = DateTime.UtcNow;

            var entityDto = new CocktailRatingDto
            {
                CocktailId = cocktailId,
                UserId     = userId,
                UserName   = "******",
                Value      = 2,
                CreatedOn  = createdOn
            };

            var entity = new CocktailRating
            {
                CocktailId = cocktailId,
                UserId     = userIdTwo,
                Value      = 2,
                CreatedOn  = createdOn
            };

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

            using (var assertContext = new CWContext(options))
            {
                //Assert

                var sut    = new CocktailRatingService(assertContext, mapperMock.Object);
                var result = await sut.CreateAsync(entityDto);

                Assert.IsInstanceOfType(result, typeof(CocktailRatingDto));
                Assert.AreEqual(cocktailId, result.CocktailId);
                Assert.AreEqual(userId, result.UserId);
                Assert.AreEqual(userId, result.UserId);
                Assert.AreEqual(2, result.Value);
                Assert.AreEqual("testusername", result.UserName);

                Assert.AreEqual(entityDto.CocktailId, result.CocktailId);
                Assert.AreEqual(entityDto.UserId, result.UserId);
                Assert.AreEqual(entityDto.UserId, result.UserId);
                Assert.AreEqual(entityDto.Value, result.Value);
                Assert.AreEqual(entityDto.UserName, result.UserName);
            }
        }
        public void MapFrom_Should_ReturnCorrectInstanceOf_CocktailRatingViewModel()
        {
            //Arrange
            var sut = new CocktailRatingViewModelMapper();

            var cocktailRating = new CocktailRatingDto
            {
                UserId     = Guid.NewGuid(),
                UserName   = "******",
                CocktailId = Guid.NewGuid(),
                CreatedOn  = DateTime.Now,
                Value      = 4,
            };

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

            //Assert
            Assert.IsInstanceOfType(result, typeof(CocktailRatingViewModel));
        }
        public void MapFrom_Should_CorrectlyMapFrom_CocktailRatingDto_To_CocktailRatingViewModel()
        {
            //Arrange
            var sut = new CocktailRatingViewModelMapper();

            var cocktailRating = new CocktailRatingDto
            {
                UserId     = Guid.NewGuid(),
                UserName   = "******",
                CocktailId = Guid.NewGuid(),
                CreatedOn  = DateTime.Now,
                Value      = 4,
            };

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

            //Assert
            Assert.AreEqual(result.Value, cocktailRating.Value);
            Assert.AreEqual(result.CocktailId, cocktailRating.CocktailId);
            Assert.AreEqual(result.UserId, cocktailRating.UserId);
            Assert.AreEqual(result.UserName, cocktailRating.UserName);
            Assert.AreEqual(result.CreatedOn, cocktailRating.CreatedOn);
        }
예제 #6
0
        public async Task ReturnNull_When_CocktailRatingParamsAreInvalid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnNull_When_CocktailRatingParamsAreInvalid));
            var mockDateTimeProvider = new Mock <IDateTimeProvider>();
            var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >();

            var ratingDto = new CocktailRatingDto
            {
                Id         = 1,
                UserId     = 0,
                CocktailId = 0,
                Value      = 0,
            };

            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object);
                var result = await sut.CreateRatingAsync(ratingDto);

                Assert.IsNull(result);
            }
        }