public override void SeedDataAsync()
        {
            Article article1 = new Article {
                Id = 1, ViewRoleString = "view_test_1", EditRoleString = "edit_test_1"
            };
            Article article2 = new Article {
                Id = 2, ViewRoleString = "view_test_2", EditRoleString = "edit_test_2"
            };
            Article article3 = new Article {
                Id = 3, ViewRoleString = "view_test_3", EditRoleString = "edit_test_3"
            };

            Context.Articles.Add(article1);
            Context.Articles.Add(article2);
            Context.Articles.Add(article3);

            Subarticle subarticle1 = new Subarticle {
                Id      = 1, Title = "test_title_1", Content = "test_content_1",
                Article = article1
            };
            Subarticle subarticle2 = new Subarticle {
                Id      = 2, Title = "test_title_1", Content = "test_content_1",
                Article = article2
            };
            Subarticle subarticle3 = new Subarticle {
                Id      = 3, Title = "test_title_1", Content = "test_content_1",
                Article = article3
            };

            Context.Subarticles.Add(subarticle1);
            Context.Subarticles.Add(subarticle2);
            Context.Subarticles.Add(subarticle3);
            Context.SaveChangesAsync();
        }
        public async Task UpdateSubarticleCommandTestAsync(int subarticleId, IEnumerable <string> userRoles, string title, string content, UpdateSubarticleResponse result)
        {
            UpdateSubarticleCommand request = new UpdateSubarticleCommand
            {
                SubarticleId = subarticleId,
                Content      = content,
                Title        = title,
                UserRoles    = userRoles,
            };
            UpdateSubarticleCommandHandler handler = new UpdateSubarticleCommandHandler(_updateFixture.Context);
            var expectedResult = await handler.Handle(request, new CancellationToken());

            Assert.Equal(expectedResult.IsSuccessful, result.IsSuccessful);
            if (expectedResult.IsSuccessful)
            {
                Subarticle subarticle = await _updateFixture.Context.Subarticles
                                        .Where(s => s.Id == expectedResult.Id)
                                        .SingleOrDefaultAsync();

                Assert.Equal(subarticle?.Id, subarticleId);
                Assert.Equal(subarticle?.Title, title);
                Assert.Equal(subarticle?.Content, content);
            }
            Assert.Equal(expectedResult.Message, result.Message);
        }
            public async Task <UpdateSubarticleResponse> Handle(UpdateSubarticleCommand request, CancellationToken cancellationToken)
            {
                try
                {
                    Subarticle subarticle = await _context.Subarticles
                                            .Include(s => s.Article)
                                            .Where(s => s.Id == request.SubarticleId).SingleOrDefaultAsync();

                    if (subarticle == null)
                    {
                        return(new UpdateSubarticleResponse
                        {
                            IsSuccessful = false,
                            Message = "No subarticle found",
                        });
                    }

                    if (request.UserRoles.Contains(subarticle.Article.EditRoleString))
                    {
                        if (request.Title != null)
                        {
                            subarticle.Title = request.Title;
                        }
                        if (request.Content != null)
                        {
                            subarticle.Content = request.Content;
                        }

                        _context.Subarticles.Update(subarticle);
                        await _context.SaveChangesAsync();

                        return(new UpdateSubarticleResponse
                        {
                            IsSuccessful = true,
                            Id = subarticle.Id,
                        });
                    }
                    else
                    {
                        return(new UpdateSubarticleResponse
                        {
                            IsSuccessful = false,
                            Message = "Can't update subarticle",
                        });
                    }
                }
                catch (Exception) {
                    return(new UpdateSubarticleResponse
                    {
                        IsSuccessful = false,
                        Message = "Can't do this",
                    });
                }
            }
            public async Task <CreateSubarticleResponse> Handle(CreateSubarticleCommand request, CancellationToken cancellationToken)
            {
                try
                {
                    Article article = await _context.Articles.Where(a => a.Id == request.ArticleId).SingleOrDefaultAsync();

                    if (article == null)
                    {
                        return(new CreateSubarticleResponse
                        {
                            IsSuccessful = false,
                            Message = "No article found",
                        });
                    }

                    if (request.UserRoles.Contains(article.EditRoleString))
                    {
                        Subarticle subarticle = new Subarticle
                        {
                            Title   = request.Title,
                            Content = request.Content,
                            Article = article
                        };

                        _context.Subarticles.Add(subarticle);
                        await _context.SaveChangesAsync();

                        return(new CreateSubarticleResponse
                        {
                            IsSuccessful = true,
                            Id = subarticle.Id,
                        });
                    }
                    else
                    {
                        return(new CreateSubarticleResponse
                        {
                            IsSuccessful = false,
                            Message = "Can't edit article",
                        });
                    }
                } catch (Exception)
                {
                    return(new CreateSubarticleResponse
                    {
                        IsSuccessful = false,
                        Message = "Can't do this",
                    });
                }
            }
        public async Task DeleteSubarticleCommandTestAsync(int subarticleId, IEnumerable <string> userRoles, DeleteSubarticleResponse result)
        {
            DeleteSubarticleCommand request = new DeleteSubarticleCommand
            {
                SubarticleId = subarticleId,
                UserRoles    = userRoles,
            };
            DeleteSubarticleCommandHandler handler = new DeleteSubarticleCommandHandler(_deleteFixture.Context);
            var expectedResult = await handler.Handle(request, new CancellationToken());

            Assert.Equal(expectedResult.IsSuccessful, result.IsSuccessful);
            if (expectedResult.IsSuccessful)
            {
                Subarticle subarticle = await _deleteFixture.Context.Subarticles
                                        .Include(s => s.Article)
                                        .Where(s => s.Id == expectedResult.Id)
                                        .SingleOrDefaultAsync();

                Assert.Null(subarticle);
            }
            Assert.Equal(expectedResult.Message, result.Message);
        }
Beispiel #6
0
 public SubarticleViewModel(Subarticle s) : base(s)
 {
     Title   = s.Title;
     Content = s.Content;
 }