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); }
public SubarticleViewModel(Subarticle s) : base(s) { Title = s.Title; Content = s.Content; }