public async Task CallSaveChangesOnce_WhenTwitterAccountAlreadyExistsInDatabase() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User() { Name = "Stamat" }; twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync(user); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(true); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act var actualResult = await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId); //Assert unitOfWorkMock.Verify(x => x.SaveChangesAsync(), Times.Once); }
public async Task ReturnFalse_TwitterAccountAddMethodReturnsFalse() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User(); twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync(user); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(false); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act var actualResult = await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId); //Assert Assert.IsFalse(actualResult); }
public void ThrowArgumentNullException_WhenUserRepositoryGetMethodReturnsNull() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User(); twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync((User)null); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(true); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId)); }