public async Task ReturnFalse_WhenTwitterAccountRepositoryDeleteMetodReturnsFalse()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            var userId           = "30";
            var twitterAccountId = "1905";

            twitterAccountRepositoryMock
            .Setup(x => x.UserTwitterAccountIsDeleted(userId, twitterAccountId))
            .ReturnsAsync(false);

            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Act
            var userIsDeleted = await twitterAccountService.DeleteTwitterAccountFromUser(userId, twitterAccountId);

            //Assert
            Assert.IsFalse(userIsDeleted);
        }
        public void ThrowArgumentException_WhenInvokedWithInvalidEmptyUserIdParameter()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            string userId         = string.Empty;
            var    twitterAccount = new TwitterAccount()
            {
                Name = "Marto Stamatov"
            };
            var expectedResult = new TwitterAccountDto()
            {
                Name = "Marto Stamatov"
            };

            twitterAccountRepositoryMock
            .Setup(x => x.Get(userId))
            .ReturnsAsync(twitterAccount);

            mappingProviderMock
            .Setup(x => x.MapTo <TwitterAccountDto>(twitterAccount))
            .Returns(expectedResult);

            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Act && Assert
            Assert.ThrowsExceptionAsync <ArgumentException>(async() => await twitterAccountService.GetTwitterAccountById(userId));
        }
        public async Task ReturnTrue_WhenInvokedWithValidParameters()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            var userId           = "30";
            var twitterAccountId = "1905";

            twitterAccountRepositoryMock
            .Setup(x => x.UserTwitterAccountIsDeleted(userId, twitterAccountId))
            .ReturnsAsync(true);

            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Act
            var userIsDeleted = await twitterAccountService.DeleteTwitterAccountFromUser(userId, twitterAccountId);

            //Assert
            Assert.IsTrue(userIsDeleted);
        }
        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));
        }
Exemple #7
0
        public void CreateInstance_WhenInvokedWithValidParameters()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            //Act
            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Assert
            Assert.IsNotNull(twitterAccountService);
            Assert.IsInstanceOfType(twitterAccountService, typeof(ITwitterAccountService));
        }
        public async Task ReturnTwitterAccount_WhenInvokedWithValidIdParameter()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            var userId         = "30";
            var twitterAccount = new TwitterAccount()
            {
                Name = "Marto Stamatov"
            };
            var expectedResult = new TwitterAccountDto()
            {
                Name = "Marto Stamatov"
            };

            twitterAccountRepositoryMock
            .Setup(x => x.Get(userId))
            .ReturnsAsync(twitterAccount);

            mappingProviderMock
            .Setup(x => x.MapTo <TwitterAccountDto>(twitterAccount))
            .Returns(expectedResult);

            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Act
            var actualResult = await twitterAccountService.GetTwitterAccountById(userId);

            //Assert
            Assert.IsNotNull(actualResult);
            Assert.AreEqual(actualResult.Name, expectedResult.Name);
        }
        public void ThrowArgumentException_WhenInvokedWithInvalidEmptyUserIdParameter()
        {
            //Arrange
            var unitOfWorkMock               = new Mock <IUnitOfWork>();
            var mappingProviderMock          = new Mock <IMappingProvider>();
            var userRepositoryMock           = new Mock <IUserRepository>();
            var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>();

            var userId           = "30";
            var twitterAccountId = "1905";

            twitterAccountRepositoryMock
            .Setup(x => x.UserTwitterAccountIsDeleted(userId, twitterAccountId))
            .ReturnsAsync(true);

            var twitterAccountService = new TwitterAccountService(
                unitOfWorkMock.Object,
                mappingProviderMock.Object,
                userRepositoryMock.Object,
                twitterAccountRepositoryMock.Object);

            //Act && Assert
            Assert.ThrowsExceptionAsync <ArgumentException>(() => twitterAccountService.DeleteTwitterAccountFromUser(string.Empty, twitterAccountId));
        }