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()); }
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); }
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); }
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); }
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); }
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)); }
public void ReturnInstance_WhenParameterIsNotNull() { //Arrange var topics = new Mock <IEfGenericRepository <Topic> >(); var topicsService = new TopicsService(topics.Object); //Act & Assert Assert.IsInstanceOf <ITopicsService>(topicsService); }
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)); }
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)); }
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)); }
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)); }
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); }
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); }
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)); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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"); }); }
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); }
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); }
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); }
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); }
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); }