public async Task DeleteByIdAsync_WithCorrectData_ShouldSuccessfullyDelete()
        {
            var testTitle = "TestTitle";

            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicReportRepository = new EfDeletableEntityRepository <TopicReport>(context);
            var topicReportsService   = new TopicReportsService(topicReportRepository);

            var inputModel = new CreateTopicReportInputModel()
            {
                Title       = "TestTitle",
                Description = "TestDescription",
            };

            await topicReportsService.SendAsync(inputModel);

            var topicReport = topicReportRepository.All().FirstOrDefault(c => c.Title == testTitle);

            // Act
            var expectedTopicReportsCount = 0;
            await topicReportsService.DeleteByIdAsync(topicReport.Id);

            var actualCommentsCount = topicReportRepository.All().Count();

            // Assert
            Assert.Equal(expectedTopicReportsCount, actualCommentsCount);
        }
        public async Task SendAsync(CreateTopicReportInputModel input)
        {
            var topicReport = new TopicReport()
            {
                Title       = input.Title,
                Description = input.Description,
                SenderId    = input.SenderId,
                TopicId     = input.TopicId,
            };

            await this.topicReportRepository.AddAsync(topicReport);

            await this.topicReportRepository.SaveChangesAsync();
        }
        public async Task <IActionResult> ReportTopic(CreateTopicReportInputModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.Redirect($"/Reports/ReportTopic?topicId={input.TopicId}"));
            }

            var senderId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);

            input.SenderId = senderId;

            await this.topicReportsService.SendAsync(input);

            return(this.Redirect("/"));
        }
        public async Task SendAsync_ShouldSuccessfullyCreateTopicReport()
        {
            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();
            var topicReportRepository = new EfDeletableEntityRepository <TopicReport>(context);
            var topicReportsService   = new TopicReportsService(topicReportRepository);

            var inputModel = new CreateTopicReportInputModel()
            {
                Title       = "TestTitle",
                Description = "TestDescription",
            };

            // Act
            var expectedTopicReportsCount = 1;
            await topicReportsService.SendAsync(inputModel);

            var actualTopicReportsCount = topicReportRepository.All().Count();

            // Assert
            Assert.Equal(expectedTopicReportsCount, actualTopicReportsCount);
        }