Example #1
0
        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);
        }
Example #2
0
        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");
        }
Example #3
0
        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);
            }
        }