public async Task DeleteAsyncWhenIdIsCorrectReturnsTopicInstance() { // Arrange var mockUnitOfWork = GetDefaultUnitOfWorkRepositoryInstance(); var mockTopicRepository = GetDefaultTopicRepositoryInstance(); var mockCourseRepository = new Mock <ICourseRepository>(); var mockExpertTopicRepository = new Mock <IExpertTopicRepository>(); var TopicId = 1; var topic = new Topic() { Id = 1, Name = "string", CourseId = 1 }; mockTopicRepository.Setup(r => r.FindById(TopicId)).Returns(Task.FromResult(topic)); mockTopicRepository.Setup(r => r.Remove(topic)); var service = new TopicService(mockTopicRepository.Object, mockUnitOfWork.Object, mockCourseRepository.Object, mockExpertTopicRepository.Object); // Act TopicResponse result = await service.DeleteAsync(TopicId); var instance = result.Resource; // Assert instance.Should().Be(topic); }
public async Task DeleteAsyncWhenInvalidIdReturnsTopicNotFoundResponse() { // Arrange var mockUnitOfWork = GetDefaultUnitOfWorkRepositoryInstance(); var mockTopicRepository = GetDefaultTopicRepositoryInstance(); var mockCourseRepository = new Mock <ICourseRepository>(); var mockExpertTopicRepository = new Mock <IExpertTopicRepository>(); var TopicId = 1; var topic = new Topic() { Id = 1, Name = "string", CourseId = 1 }; mockTopicRepository.Setup(r => r.FindById(TopicId)).Returns(Task.FromResult <Topic>(null)); mockTopicRepository.Setup(r => r.Remove(topic)); var service = new TopicService(mockTopicRepository.Object, mockUnitOfWork.Object, mockCourseRepository.Object, mockExpertTopicRepository.Object); // Act TopicResponse result = await service.DeleteAsync(TopicId); var message = result.Message; // Assert message.Should().Be("Topic not found"); }
public async Task Should_delete_topic_and_add_event() { var options = Shared.CreateContextOptions(); var siteId = Guid.NewGuid(); var categoryId = Guid.NewGuid(); var forumId = Guid.NewGuid(); var userId = Guid.NewGuid(); var category = new Category(categoryId, siteId, "Category", 1, Guid.NewGuid()); var forum = new Forum(forumId, category.Id, "Forum", "my-forum", "My Forum", 1); var topic = Post.CreateTopic(forumId, userId, "Title", "slug", "Content", StatusType.Published); var user = new User(userId, Guid.NewGuid().ToString(), "Email", "Display Name"); category.IncreaseTopicsCount(); forum.IncreaseTopicsCount(); user.IncreaseTopicsCount(); using (var dbContext = new AtlasDbContext(options)) { dbContext.Categories.Add(category); dbContext.Forums.Add(forum); dbContext.Posts.Add(topic); dbContext.Users.Add(user); await dbContext.SaveChangesAsync(); } using (var dbContext = new AtlasDbContext(options)) { var command = Fixture.Build <DeleteTopic>() .With(x => x.Id, topic.Id) .With(x => x.ForumId, forumId) .With(x => x.SiteId, siteId) .Create(); var cacheManager = new Mock <ICacheManager>(); var createValidator = new Mock <IValidator <CreateTopic> >(); var updateValidator = new Mock <IValidator <UpdateTopic> >(); var sut = new TopicService(dbContext, cacheManager.Object, createValidator.Object, updateValidator.Object); await sut.DeleteAsync(command); var topicDeleted = await dbContext.Posts.FirstOrDefaultAsync(x => x.Id == topic.Id); var topicEvent = await dbContext.Events.FirstOrDefaultAsync(x => x.TargetId == topic.Id); var updatedCategory = await dbContext.Categories.FirstOrDefaultAsync(x => x.Id == category.Id); var updatedForum = await dbContext.Forums.FirstOrDefaultAsync(x => x.Id == forum.Id); var updatedUser = await dbContext.Users.FirstOrDefaultAsync(x => x.Id == user.Id); Assert.AreEqual(StatusType.Deleted, topicDeleted.Status); Assert.NotNull(topicEvent); Assert.AreEqual(0, updatedCategory.TopicsCount); Assert.AreEqual(0, updatedForum.TopicsCount); Assert.AreEqual(0, updatedUser.TopicsCount); } }