public async Task Return_Correct_Model_When_ParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Return_Correct_Model_When_ParamsAreValid));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var user = new User {
                Id = 1
            };
            var bar = new Bar {
                Id = 1
            };

            var rating = new BarRating
            {
                Id     = 1,
                UserId = 1,
                BarId  = 1,
                Value  = 5,
            };
            var ratingDto = new BarRatingDto
            {
                Id     = 1,
                UserId = 1,
                BarId  = 1,
                Value  = 5,
            };

            mockBarRatingDtoMapper.Setup(x => x.MapDto(It.IsAny <BarRating>())).Returns(ratingDto);

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

                await arrangeContext.Users.AddAsync(user);

                await arrangeContext.BarRatings.AddAsync(rating);

                await arrangeContext.SaveChangesAsync();
            }

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

                Assert.IsInstanceOfType(result, typeof(BarRatingDto));
                Assert.AreEqual(1, result.Id);
                Assert.AreEqual(1, result.UserId);
                Assert.AreEqual(1, result.BarId);
                Assert.AreEqual(5, result.Value);
            }
        }
Beispiel #2
0
        public async Task CorrectlyCreateBarRating()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(CorrectlyCreateBarRating));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var barId     = Guid.NewGuid();
            var barIdTwo  = Guid.NewGuid();
            var userId    = Guid.NewGuid();
            var userIdTwo = Guid.NewGuid();

            var createdOn = DateTime.UtcNow;

            var entityDto = new BarRatingDto
            {
                BarId     = barId,
                UserId    = userId,
                UserName  = "******",
                Value     = 2,
                CreatedOn = createdOn
            };

            var entity = new BarRating
            {
                BarId     = barIdTwo,
                UserId    = userIdTwo,
                Value     = 2,
                CreatedOn = createdOn
            };

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

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

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

                Assert.IsInstanceOfType(result, typeof(BarRatingDto));
                Assert.AreEqual(barId, result.BarId);
                Assert.AreEqual(userId, result.UserId);
                Assert.AreEqual(userId, result.UserId);
                Assert.AreEqual(2, result.Value);
                Assert.AreEqual("testusername", result.UserName);

                Assert.AreEqual(entityDto.BarId, result.BarId);
                Assert.AreEqual(entityDto.UserId, result.UserId);
                Assert.AreEqual(entityDto.UserId, result.UserId);
                Assert.AreEqual(entityDto.Value, result.Value);
                Assert.AreEqual(entityDto.UserName, result.UserName);
            }
        }
Beispiel #3
0
        public void Consctructor_CreateInstance()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Consctructor_CreateInstance));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut = new BarRatingService(assertContext, mockBarRatingDtoMapper.Object, mockDateTimeProvider.Object);
                Assert.IsNotNull(sut);
            }
        }
Beispiel #4
0
        public void ReturnCorrectValue_When_ParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCorrectValue_When_ParamsAreValid));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var user1 = new User {
                Id = 1
            };
            var user2 = new User {
                Id = 2
            };
            var bar = new Bar {
                Id = 1
            };

            var rating1 = new BarRating
            {
                Id     = 1,
                UserId = 1,
                BarId  = 1,
                Value  = 5,
            };
            var rating2 = new BarRating
            {
                Id     = 2,
                UserId = 2,
                BarId  = 1,
                Value  = 3,
            };

            using (var arrangeContext = new CocktailMagicianContext(options))
            {
                arrangeContext.Bars.AddAsync(bar);
                arrangeContext.Users.AddAsync(user1);
                arrangeContext.Users.AddAsync(user2);
                arrangeContext.BarRatings.AddAsync(rating1);
                arrangeContext.BarRatings.AddAsync(rating2);
                arrangeContext.SaveChangesAsync();
            }
            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new BarRatingService(assertContext, mockBarRatingDtoMapper.Object, mockDateTimeProvider.Object);
                var result = sut.GetAverageBarRating(1);

                Assert.AreEqual(4, result);
            }
        }
        public async Task ReturnNull_When_NoRatingsFound()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnNull_When_NoRatingsFound));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

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

                Assert.IsNull(result);
            }
        }
Beispiel #6
0
        public void BarRatingServiceConstructor_CreatesInstance()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(BarRatingServiceConstructor_CreatesInstance));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            using (var assertContext = new CWContext(options))
            {
                //Act
                var sut = new BarRatingService(assertContext, mapperMock.Object);

                //Assert
                Assert.IsNotNull(sut);
            }
        }
Beispiel #7
0
        public void Return_0_When_NoRatingsFound()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Return_0_When_NoRatingsFound));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new BarRatingService(assertContext, mockBarRatingDtoMapper.Object, mockDateTimeProvider.Object);
                var result = sut.GetAverageBarRating(1);

                Assert.AreEqual(0, result);
            }
        }
Beispiel #8
0
        public async Task ThrowWhen_DtoPassedIsNull()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ThrowWhen_DtoPassedIsNull));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            mapperMock.Setup(x => x.MapFrom(It.IsAny <BarRating>())).Returns(It.IsAny <BarRatingDto>);

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new BarRatingService(assertContext, mapperMock.Object);
                await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.CreateAsync(null));
            }
        }
        public async Task Throw_WhenNoBarRatingDtoFound()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(Throw_WhenNoBarRatingDtoFound));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var barId     = Guid.NewGuid();
            var userId    = Guid.NewGuid();
            var userIdTwo = Guid.NewGuid();

            var entity = new BarRating
            {
                BarId  = barId,
                UserId = userId,
                Value  = 2
            };

            var entityDto = new BarRatingDto
            {
                BarId  = barId,
                UserId = userId,
                Value  = 2
            };



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

            using (var arrangeContext = new CWContext(options))
            {
                await arrangeContext.BarRatings.AddAsync(entity);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new BarRatingService(assertContext, mapperMock.Object);

                await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.GetRatingAsync(barId, userId));
            }
        }
Beispiel #10
0
        public async Task ReturnNull_When_ParamsAreInvalid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnNull_When_ParamsAreInvalid));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var ratingDto = new BarRatingDto
            {
                Id     = 1,
                UserId = 0,
                BarId  = 0,
                Value  = 0,
            };

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

                Assert.IsNull(result);
            }
        }
Beispiel #11
0
        public async Task ReturnCorrectModels_When_ParamsAreValid()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCorrectModels_When_ParamsAreValid));
            var mockDateTimeProvider   = new Mock <IDateTimeProvider>();
            var mockBarRatingDtoMapper = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var user1 = new User {
                Id = 1
            };
            var user2 = new User {
                Id = 2
            };
            var bar = new Bar {
                Id = 1
            };

            var rating1 = new BarRating
            {
                Id     = 1,
                UserId = 1,
                BarId  = 1,
                Value  = 5,
            };
            var rating2 = new BarRating
            {
                Id     = 2,
                UserId = 2,
                BarId  = 1,
                Value  = 3,
            };

            var list = new List <BarRatingDto>()
            {
                new BarRatingDto
                {
                    Id     = 1,
                    UserId = 1,
                    BarId  = 1,
                    Value  = 5,
                },

                new BarRatingDto
                {
                    Id     = 2,
                    UserId = 2,
                    BarId  = 1,
                    Value  = 3,
                }
            };

            mockBarRatingDtoMapper.Setup(x => x.MapDto(It.IsAny <ICollection <BarRating> >())).Returns(list);
            using (var arrangeContext = new CocktailMagicianContext(options))
            {
                await arrangeContext.Bars.AddAsync(bar);

                await arrangeContext.Users.AddAsync(user1);

                await arrangeContext.Users.AddAsync(user2);

                await arrangeContext.BarRatings.AddAsync(rating1);

                await arrangeContext.BarRatings.AddAsync(rating2);

                await arrangeContext.SaveChangesAsync();
            }
            //Act and Assert
            using (var assertContext = new CocktailMagicianContext(options))
            {
                var sut    = new BarRatingService(assertContext, mockBarRatingDtoMapper.Object, mockDateTimeProvider.Object);
                var result = await sut.GetAllBarRatingAsync(1);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual(1, result.First().Id);
                Assert.AreEqual(1, result.First().UserId);
                Assert.AreEqual(1, result.First().BarId);
                Assert.AreEqual(5, result.First().Value);
                Assert.AreEqual(2, result.Last().Id);
                Assert.AreEqual(2, result.Last().UserId);
                Assert.AreEqual(1, result.Last().BarId);
                Assert.AreEqual(3, result.Last().Value);
            }
        }
        public async Task ReturnCorrectInstanceOfBarRatingDto()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(ReturnCorrectInstanceOfBarRatingDto));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var barId     = Guid.NewGuid();
            var userId    = Guid.NewGuid();
            var userIdTwo = Guid.NewGuid();

            var bar = new Bar
            {
                Name = "BarTest",
                Id   = barId,
            };
            var user = new User
            {
                UserName = "******",
                Id       = userId,
            };

            var entity = new BarRating
            {
                BarId  = bar.Id,
                UserId = user.Id,
                Value  = 2
            };

            var entityDto = new BarRatingDto
            {
                BarId  = bar.Id,
                UserId = user.Id,
                Value  = 2
            };



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

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

                await arrangeContext.Users.AddAsync(user);

                await arrangeContext.BarRatings.AddAsync(entity);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new BarRatingService(assertContext, mapperMock.Object);

                var result = await sut.GetRatingAsync(barId, userId);

                Assert.IsInstanceOfType(result, typeof(BarRatingDto));
                Assert.AreEqual(entity.Value, result.Value);
                Assert.AreEqual(entity.UserId, result.UserId);
            }
        }
        public async Task GetAllRatings_ReturnInstanceOfCollectionBarRatingDtos()
        {
            //Arrange
            var options = TestUtilities.GetOptions(nameof(GetAllRatings_ReturnInstanceOfCollectionBarRatingDtos));

            var mapperMock = new Mock <IDtoMapper <BarRating, BarRatingDto> >();

            var barId     = Guid.NewGuid();
            var userId    = Guid.NewGuid();
            var userIdTwo = Guid.NewGuid();

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

            var user = new User
            {
                Id       = userId,
                UserName = "******"
            };

            var entity = new BarRating
            {
                BarId     = barId,
                UserId    = userId,
                Value     = 2,
                CreatedOn = DateTime.UtcNow,
            };

            var entityTwo = new BarRating
            {
                BarId     = barId,
                UserId    = userIdTwo,
                Value     = 2,
                CreatedOn = DateTime.UtcNow,
            };

            var list = new List <BarRatingDto>()
            {
                new BarRatingDto {
                    BarId = barId, UserId = userId, Value = 2
                },
                new BarRatingDto {
                    BarId = barId, UserId = userIdTwo, Value = 2
                },
            };

            mapperMock.Setup(x => x.MapFrom(It.IsAny <ICollection <BarRating> >())).Returns(list);

            using (var arrangeContext = new CWContext(options))
            {
                //await arrangeContext.Bars.AddAsync(bar);
                //await arrangeContext.Users.AddAsync(user);
                await arrangeContext.BarRatings.AddAsync(entity);

                await arrangeContext.BarRatings.AddAsync(entityTwo);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CWContext(options))
            {
                //Act & Assert
                var sut = new BarRatingService(assertContext, mapperMock.Object);

                var result = await sut.GetAllRatingsAsync(barId);

                Assert.IsInstanceOfType(result, typeof(ICollection <BarRatingDto>));
                Assert.AreEqual(2, result.Count());
                Assert.AreEqual(entity.Value, result.First().Value);
                Assert.AreEqual(entity.UserId, result.First().UserId);
                Assert.AreEqual(entityTwo.Value, result.Last().Value);
                Assert.AreEqual(entityTwo.UserId, result.Last().UserId);
            }
        }