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 ReturnCorrectValue_When_ParamsAreValidInMethod() { //Arrange var options = TestUtilities.GetOptions(nameof(ReturnCorrectValue_When_ParamsAreValidInMethod)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); var user1 = new User { Id = 1 }; var user2 = new User { Id = 2 }; var cocktail = new Cocktail { Id = 1 }; var rating1 = new CocktailRating { Id = 1, UserId = 1, CocktailId = 1, Value = 5, }; var rating2 = new CocktailRating { Id = 2, UserId = 2, CocktailId = 1, Value = 3, }; using (var arrangeContext = new CocktailMagicianContext(options)) { arrangeContext.Cocktails.AddAsync(cocktail); arrangeContext.Users.AddAsync(user1); arrangeContext.Users.AddAsync(user2); arrangeContext.CocktailRatings.AddAsync(rating1); arrangeContext.CocktailRatings.AddAsync(rating2); arrangeContext.SaveChangesAsync(); } //Act and Assert using (var assertContext = new CocktailMagicianContext(options)) { var sut = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object); var result = sut.GetAverageCocktailRating(1); Assert.AreEqual(4, result); } }
public void ConsctructorCocktailRating_CreateInstance() { //Arrange var options = TestUtilities.GetOptions(nameof(ConsctructorCocktailRating_CreateInstance)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); //Act and Assert using (var assertContext = new CocktailMagicianContext(options)) { var sut = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object); Assert.IsNotNull(sut); } }
public void Return_0_When_NoRatingsFoundCocktailRating() { //Arrange var options = TestUtilities.GetOptions(nameof(Return_0_When_NoRatingsFoundCocktailRating)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); //Act and Assert using (var assertContext = new CocktailMagicianContext(options)) { var sut = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object); var result = sut.GetAverageCocktailRating(1); Assert.AreEqual(0, result); } }
public async Task ThrowWhen_DtoPassedIsNull() { //Arrange var options = TestUtilities.GetOptions(nameof(ThrowWhen_DtoPassedIsNull)); var mapperMock = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); mapperMock.Setup(x => x.MapFrom(It.IsAny <CocktailRating>())).Returns(It.IsAny <CocktailRatingDto>); using (var assertContext = new CWContext(options)) { //Act & Assert var sut = new CocktailRatingService(assertContext, mapperMock.Object); await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.CreateAsync(null)); } }
public void CocktailRatingServiceConstructor_CreatesInstance() { //Arrange var options = TestUtilities.GetOptions(nameof(CocktailRatingServiceConstructor_CreatesInstance)); var mapperMock = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); using (var assertContext = new CWContext(options)) { //Act var sut = new CocktailRatingService(assertContext, mapperMock.Object); //Assert Assert.IsNotNull(sut); } }
public async Task ReturnNull_When_NoRatingsFound() { //Arrange var options = TestUtilities.GetOptions(nameof(Return_Correct_Model_When_ParamsAreValidCocktailRating)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); //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.IsNull(result); } }
public async Task ReturnNull_When_CocktailDtoIsNull() { //Arrange var options = TestUtilities.GetOptions(nameof(ReturnNull_When_CocktailDtoIsNull)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); //Act and Assert using (var assertContext = new CocktailMagicianContext(options)) { var sut = new CocktailRatingService(assertContext, mockDateTimeProvider.Object, mapper.Object); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.CreateRatingAsync(null)); } }
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); } }
public async Task ReturnInstanceOfCollectionCocktailRatingDtos() { //Arrange var options = TestUtilities.GetOptions(nameof(ReturnInstanceOfCollectionCocktailRatingDtos)); var mapperMock = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); var cocktailId = Guid.NewGuid(); var userId = Guid.NewGuid(); var userIdTwo = Guid.NewGuid(); var date1 = new DateTime(2017, 1, 18); var date2 = new DateTime(2017, 1, 20); var cocktail = new Cocktail { Id = cocktailId, Name = "testName" }; var user = new User { Id = userId, UserName = "******" }; var entity = new CocktailRating { CocktailId = cocktailId, UserId = userId, Value = 2, CreatedOn = date1, }; var entityTwo = new CocktailRating { CocktailId = cocktailId, UserId = userIdTwo, Value = 2, CreatedOn = date2, }; var list = new List <CocktailRatingDto>() { new CocktailRatingDto { CocktailId = cocktailId, UserId = userId, Value = 2 }, new CocktailRatingDto { CocktailId = cocktailId, UserId = userIdTwo, Value = 2 }, }; mapperMock.Setup(x => x.MapFrom(It.IsAny <ICollection <CocktailRating> >())).Returns(list); using (var arrangeContext = new CWContext(options)) { //await arrangeContext.Cocktails.AddAsync(cocktail); //await arrangeContext.Users.AddAsync(user); await arrangeContext.CocktailRatings.AddAsync(entity); await arrangeContext.CocktailRatings.AddAsync(entityTwo); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CWContext(options)) { //Act & Assert var sut = new CocktailRatingService(assertContext, mapperMock.Object); var result = await sut.GetAllRatingsAsync(cocktailId); Assert.IsInstanceOfType(result, typeof(ICollection <CocktailRatingDto>)); 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); } }
public async Task ReturnCorrectEntity_When_ParamsAreValid() { //Arrange var options = TestUtilities.GetOptions(nameof(ReturnCorrectEntity_When_ParamsAreValid)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mapper = new Mock <IDtoMapper <CocktailRating, CocktailRatingDto> >(); var user1 = new User { Id = 1 }; var user2 = new User { Id = 2 }; var cocktail = new Cocktail { Id = 1 }; var rating1 = new CocktailRating { Id = 1, UserId = 1, CocktailId = 1, Value = 5, }; var rating2 = new CocktailRating { Id = 2, UserId = 2, CocktailId = 1, Value = 3, }; var list = new List <CocktailRatingDto>() { new CocktailRatingDto { Id = 1, UserId = 1, CocktailId = 1, Value = 5, }, new CocktailRatingDto { Id = 2, UserId = 2, CocktailId = 1, Value = 3, } }; mapper.Setup(x => x.MapDto(It.IsAny <ICollection <CocktailRating> >())).Returns(list); using (var arrangeContext = new CocktailMagicianContext(options)) { await arrangeContext.Cocktails.AddAsync(cocktail); await arrangeContext.Users.AddAsync(user1); await arrangeContext.Users.AddAsync(user2); await arrangeContext.CocktailRatings.AddAsync(rating1); await arrangeContext.CocktailRatings.AddAsync(rating2); 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.GetAllRatingsAsync(1); Assert.AreEqual(2, result.Count); Assert.AreEqual(1, result.First().Id); Assert.AreEqual(1, result.First().UserId); Assert.AreEqual(1, result.First().CocktailId); Assert.AreEqual(5, result.First().Value); Assert.AreEqual(2, result.Last().Id); Assert.AreEqual(2, result.Last().UserId); Assert.AreEqual(1, result.Last().CocktailId); Assert.AreEqual(3, result.Last().Value); } }