コード例 #1
0
        public async Task DeleteByIdAsync_WithCorrectData_ShouldSuccessfullyDelete()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            var inputModel = new CreateTopicInputModel()
            {
                Title   = "TestTitle",
                Content = "TestContent_TestContent_TestContent_TestContent_TestContent_TestContent",
            };

            await topicsService.CreateAsync(inputModel);

            var topic = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle");

            // Act
            var expectedTopicsCount = 0;
            await topicsService.DeleteByIdAsync(topic.Id);

            // Assert
            Assert.Equal(expectedTopicsCount, topicRepository.All().Count());
        }
コード例 #2
0
        public async Task CancelVoteAsync_WithIsLikeFalse_ShouldSuccessfullyDecreaseTopicDislikesWithOne()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            var inputModel = new CreateTopicInputModel()
            {
                Title   = "TestTitle",
                Content = "TestContent_TestContent_TestContent_TestContent_TestContent_TestContent",
            };

            await topicsService.CreateAsync(inputModel);

            var topic = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle");
            await topicsService.VoteTopicAsync(topic.Id, false);

            // Act
            var expectedTopicDislikes = 0;
            await topicsService.CancelVoteAsync(topic.Id, false);

            var actualTopicDislikes = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle").Dislikes;

            // Assert
            Assert.Equal(expectedTopicDislikes, actualTopicDislikes);
        }
コード例 #3
0
        public async Task GetTopicTotalDisikes_WithCorrectTopicId_ShouldReturnCorrectTotalLikes()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            var inputModel = new CreateTopicInputModel()
            {
                Title   = "TestTitle",
                Content = "TestContent_TestContent_TestContent_TestContent_TestContent_TestContent",
            };

            await topicsService.CreateAsync(inputModel);

            var topic = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle");

            topic.Dislikes = 15;
            topicRepository.Update(topic);
            await topicRepository.SaveChangesAsync();

            // Act
            var expectedTotalTopicDislikes = 15;
            var actualTotalTopicDislikes   = topicsService.GetTopicTotalDislikes(topic.Id);

            // Assert
            Assert.Equal(expectedTotalTopicDislikes, actualTotalTopicDislikes);
        }
コード例 #4
0
        public async Task IncreaseViewsAsync_ShouldIncreaseTopicViews()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            var inputModel = new CreateTopicInputModel()
            {
                Title   = "TestTitle",
                Content = "TestContent_TestContent_TestContent_TestContent_TestContent_TestContent",
            };

            await topicsService.CreateAsync(inputModel);

            var topicId = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle").Id;

            // Act
            var expectedViews = 1;
            await topicsService.IncreaseViewsAsync(topicId);

            var actualViews = topicRepository.All().FirstOrDefault(t => t.Title == "TestTitle").Views;

            // Assert
            Assert.Equal(expectedViews, actualViews);
        }
コード例 #5
0
        public async Task GetRemainingMinutesToCreateTopic_WhenThereIsNoOtherTopic_ShouldReturnCorrectMinutes()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            var user = new ApplicationUser()
            {
                UserName = "******",
            };

            await userRepository.AddAsync(user);

            await userRepository.SaveChangesAsync();

            var userId = userRepository.All().FirstOrDefault(u => u.UserName == "testUsername").Id;

            // Act
            var expectedRemainingMinutes = 31;
            var actualRemainingMinutes   = topicsService.GetRemainingMinutesToCreateTopic(userId);

            // Assert
            Assert.Equal(expectedRemainingMinutes, actualRemainingMinutes);
        }
コード例 #6
0
        public void Throw_WhenPassedParameterIsNull()
        {
            //Arrange
            var topics        = new Mock <IEfGenericRepository <Topic> >();
            var topicsService = new TopicsService(topics.Object);

            //Act & Assert
            Assert.Throws <ArgumentNullException>(() => topicsService.Create(null));
        }
コード例 #7
0
        public void ReturnInstance_WhenParameterIsNotNull()
        {
            //Arrange
            var topics        = new Mock <IEfGenericRepository <Topic> >();
            var topicsService = new TopicsService(topics.Object);

            //Act & Assert
            Assert.IsInstanceOf <ITopicsService>(topicsService);
        }
コード例 #8
0
        public void Throw_WhenIdParameterIsInvalid()
        {
            // Arrange
            var topics         = new Mock <IEfGenericRepository <Topic> >();
            var invalidTopicId = 0;
            var topicsService  = new TopicsService(topics.Object);

            //Act & Assert
            Assert.Throws <ArgumentOutOfRangeException>(() => topicsService.GetById(invalidTopicId));
        }
コード例 #9
0
ファイル: Add_Should.cs プロジェクト: YavorYanchev/Langcademy
        public void ThrowArgumentNullExceptionWhenTopicIsNull()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = (Topic)null;

            // Act & Arrange
            Assert.Throws <ArgumentNullException>(() => topicService.Add(mockedTopic));
        }
コード例 #10
0
        public void ThrowArgumentNullExceptionWhenTopicIsNotFound(int invalidId)
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => topicService.GetById(invalidId));
        }
コード例 #11
0
        public void Throw_WhenDescriptionParameterIsInvalid()
        {
            //Arrange
            var topics        = new Mock <IEfGenericRepository <Topic> >();
            var topic         = DataHelper.GetTopic();
            var topicName     = topic.Name;
            var topicId       = topic.Id;
            var topicsService = new TopicsService(topics.Object);

            //Act & Assert
            Assert.Throws <ArgumentNullException>(() => topicsService.UpdateById(topicId, topicName, null));
        }
コード例 #12
0
        public void ThrowArgumentNullExceptionWhenTopicIsNotFoundWithCorrectMessage(int invalidId)
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act & Assert
            var exc = Assert.Throws <ArgumentNullException>(() => topicService.GetById(invalidId));

            StringAssert.Contains("not found", exc.Message);
        }
コード例 #13
0
ファイル: Add_Should.cs プロジェクト: YavorYanchev/Langcademy
        public void ThrowArgumentNullExceptionWithMessageThatShouldNotBeBullWhenTopicIsNull()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = (Topic)null;

            // Act & Arrange
            var exc = Assert.Throws <ArgumentNullException>(() => topicService.Add(mockedTopic));

            StringAssert.Contains("should not be null", exc.Message);
        }
コード例 #14
0
        public void ReturnTopicInstance()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            mockedRepository.Setup(m => m.GetById(1)).Returns(mockedTopic.Object);
            // Act & Assert

            Assert.IsInstanceOf <Topic>(topicService.GetById(1));
        }
コード例 #15
0
ファイル: Add_Should.cs プロジェクト: YavorYanchev/Langcademy
        public void CallSaveMethodOnDbRepositoryOnlyOnce()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act
            topicService.Add(mockedTopic.Object);

            // Assert
            mockedRepository.Verify(m => m.Save(), Times.Once);
        }
コード例 #16
0
        public void ReturnIEnumerableOfTopic(string searchTerm)
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act
            var result = topicService.GetTopicByNameOrDescription(searchTerm);

            // Assert
            Assert.IsInstanceOf <IEnumerable <Topic> >(result);
        }
コード例 #17
0
        public void ThrowArgumentNullExceptionWhenTopicIsNull()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            mockedRepository.Setup(m => m.GetById(1)).Returns((Topic)null);
            // Act & Assert

            Assert.Throws <ArgumentNullException>(() => topicService.GetById(1));
            // Assert.IsInstanceOf<Topic>(topicService.GetById(1));
        }
コード例 #18
0
        public void CallSaveOnTheRepository(int id)
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act
            topicService.HardDeleteTopicById(id);

            // Assert
            mockedRepository.Verify(m => m.Save(), Times.Once);
        }
コード例 #19
0
        public void ReturnIQuerableOfTopic()
        {
            // Arrange
            var mockedRepository = new Mock <IDbRepository <Topic> >();
            var mockedIdentifier = new Mock <IIdentifierProvider>();
            var topicService     = new TopicsService(mockedRepository.Object, mockedIdentifier.Object);
            var mockedTopic      = new Mock <Topic>();

            // Act
            var topics = topicService.GetAllTopics();

            // Assert
            Assert.IsInstanceOf <IQueryable <Topic> >(topics);
        }
コード例 #20
0
        public void ReturnNull_WhenRepositoryMethodAll_ReturnsNull()
        {
            //Arrange
            var topics = new Mock <IEfGenericRepository <Topic> >();

            topics.Setup(x => x.All()).Returns(() => null);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetAll();

            //Assert
            Assert.IsNull(result);
        }
コード例 #21
0
        public void InvokeRepositoryMethodAddOnce_WhenPassedParameterIsValid()
        {
            //Arrange
            var topics = new Mock <IEfGenericRepository <Topic> >();
            var topic  = DataHelper.GetTopic();

            topics.Setup(x => x.Add(It.IsAny <Topic>())).Verifiable();
            var topicsService = new TopicsService(topics.Object);

            //Act
            topicsService.Create(topic);

            //Assert
            topics.Verify(x => x.Add(It.IsAny <Topic>()), Times.Once);
        }
コード例 #22
0
        public void InvokeRepositoryMethosAllOnce()
        {
            //Arrange
            var topics           = new Mock <IEfGenericRepository <Topic> >();
            var topicsCollection = DataHelper.GetTopics();

            topics.Setup(x => x.All()).Returns(topicsCollection);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetAll();

            //Assert
            topics.Verify(x => x.All(), Times.Once);
        }
コード例 #23
0
        public void ReturnCorrectInstance()
        {
            //Arrange
            var topics           = new Mock <IEfGenericRepository <Topic> >();
            var topicsCollection = DataHelper.GetTopics();

            topics.Setup(x => x.All()).Returns(topicsCollection);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetAll();

            //Assert
            Assert.IsInstanceOf <IQueryable <Topic> >(result);
        }
コード例 #24
0
        public void InvokeRepositoryMethosDeleteOnce()
        {
            //Arrange
            var topics = new Mock <IEfGenericRepository <Topic> >();
            var topic  = DataHelper.GetTopic();

            topics.Setup(x => x.Delete(It.IsAny <Topic>())).Verifiable();
            var topicsService = new TopicsService(topics.Object);

            //Act
            topicsService.Delete(topic);

            //Assert
            topics.Verify(x => x.Delete(It.IsAny <Topic>()), Times.Once);
        }
コード例 #25
0
        public async Task GetTopicTotalDislikes_WithIncorrectTopicId_ShouldThrowArgumentException()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);

            // Act

            // Assert
            await Assert.ThrowsAsync <ArgumentException>(async() =>
            {
                topicsService.GetTopicTotalDislikes("InvalidId");
            });
        }
コード例 #26
0
        public void InvokeRepositoryMethosGetByIdOnce()
        {
            //Arrange
            var topics  = new Mock <IEfGenericRepository <Topic> >();
            var topic   = DataHelper.GetTopic();
            var topicId = topic.Id;

            topics.Setup(x => x.GetById(It.IsAny <int>())).Returns(topic);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetById(topicId);

            //Assert
            topics.Verify(x => x.GetById(It.IsAny <int>()), Times.Once);
        }
コード例 #27
0
        public async Task GetTotalTopicsCount_ShouldReturnCorrectTotalTopicsCount()
        {
            // Arrange
            var context         = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicRepository = new EfDeletableEntityRepository <Topic>(context);
            var userRepository  = new EfDeletableEntityRepository <ApplicationUser>(context);
            var topicsService   = new TopicsService(topicRepository, userRepository);
            await topicsService.CreateAsync(new CreateTopicInputModel());

            // Act
            var expectedTopicsCount = 1;
            var actualTopicsCount   = topicsService.GetTotalTopicsCount();

            // Assert
            Assert.Equal(expectedTopicsCount, actualTopicsCount);
        }
コード例 #28
0
        public void ReturnCorrectInstance()
        {
            //Arrange
            var topics  = new Mock <IEfGenericRepository <Topic> >();
            var topic   = DataHelper.GetTopic();
            var topicId = topic.Id;

            topics.Setup(x => x.GetById(It.IsAny <int>())).Returns(topic);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetById(topicId);

            //Assert
            Assert.IsInstanceOf <Topic>(result);
        }
コード例 #29
0
        public void ReturnNull_WhenRepositoryMethodGetById_ReturnsNull()
        {
            //Arrange
            var topics  = new Mock <IEfGenericRepository <Topic> >();
            var topic   = DataHelper.GetTopic();
            var topicId = topic.Id;

            topics.Setup(x => x.GetById(It.IsAny <int>())).Returns(() => null);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetById(topicId);

            //Assert
            Assert.IsNull(result);
        }
コード例 #30
0
        public void ReturnCorrectModel()
        {
            //Arrange
            var topics           = new Mock <IEfGenericRepository <Topic> >();
            var topicsCollection = DataHelper.GetTopics();

            topics.Setup(x => x.All()).Returns(topicsCollection);
            var topicsService = new TopicsService(topics.Object);

            //Act
            var result = topicsService.GetAll();

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result, topicsCollection);
        }