public void DetailsShouldReturnNotFoundWhenNonPublicArticleAndAnonymousUser() => MyController <ArticlesController> .Instance() .WithData(ArticleTestData.GetArticles(1, isPublic: false)) .Calling(c => c.Details(1)) .ShouldReturn() .NotFound();
public void ConfirmDeleteShouldReturnNotFoundWhenNonAuthorUser() => MyController <ArticlesController> .Instance() .WithUser(user => user.WithIdentifier("NonAuthor")) .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.ConfirmDelete(1)) .ShouldReturn() .NotFound();
public void EditPostShouldReturnNotFoundWhenNonAuthorUser() => MyController <ArticlesController> .Instance() .WithUser(user => user.WithIdentifier("NonAuthor")) .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.Edit(1, With.Empty <ArticleFormModel>())) .ShouldReturn() .NotFound();
public void DetailsShouldReturnNotFoundWhenNonPublicArticleAndNonAdministratorNonAuthorUser() => MyController <ArticlesController> .Instance() .WithUser("NonAuthor") .WithData(ArticleTestData.GetArticles(1, isPublic: false)) .Calling(c => c.Details(1)) .ShouldReturn() .NotFound();
public void EditGetShouldReturnNotFoundWhenNonAuthorUser() => MyController <ArticlesController> .Instance() .WithUser("NonAuthor") .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.Edit(1)) .ShouldReturn() .NotFound();
public void DeleteShouldReturnViewWithCorrectModelWhenCorrectUser(int articleId, string username, string role) => MyController <ArticlesController> .Instance() .WithUser(username, new[] { role }) .WithData(ArticleTestData.GetArticles(articleId)) .Calling(c => c.Delete(articleId)) .ShouldReturn() .View(articleId);
public void IndexShouldReturnDefaultViewWithCorrectModel(int total, bool arePublic, int expected) => MyController <HomeController> .Instance() .WithData(ArticleTestData.GetArticles(total, arePublic)) .Calling(c => c.Index()) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleListingServiceModel> >() .Passing(articles => articles.Count.ShouldBe(expected)));
public void DetailsShouldReturnViewWithCorrectModelWhenPublicArticleAndAnonymousUser() => MyController <ArticlesController> .Instance() .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.Details(1)) .ShouldReturn() .View(view => view .WithModelOfType <ArticleDetailsServiceModel>() .Passing(article => article.Id == 1));
public void AllShouldReturnViewWithAllArticles() => MyController <ArticlesController> .Instance() .WithData(ArticleTestData.GetArticles(1, isPublic: false)) .Calling(c => c.All()) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleNonPublicListingServiceModel> >() .Passing(articles => articles.ShouldNotBeEmpty()));
public void EditGetShouldReturnViewWithCorrectModelWhenCorrectUser(int articleId, string username, string role) => MyController <ArticlesController> .Instance() .WithUser(username, new[] { role }) .WithData(ArticleTestData.GetArticles(articleId)) .Calling(c => c.Edit(articleId)) .ShouldReturn() .View(view => view .WithModelOfType <ArticleFormModel>() .Passing(article => article.Title == $"Article {articleId}"));
public void DetailsShouldReturnViewWithCorrectModelWhenPublicArticleAndNonAdministratorNonAuthorUser() => MyController <ArticlesController> .Instance(instance => instance .WithUser("NonAuthor") .WithData(ArticleTestData.GetArticles(1))) .Calling(c => c.Details(1)) .ShouldReturn() .View(view => view .WithModelOfType <ArticleDetailsServiceModel>() .Passing(article => article.Id == 1));
public void EditPostShouldReturnViewWithSameModelWhenInvalidModelState() => MyController <ArticlesController> .Instance() .WithUser() .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.Edit(1, With.Default <ArticleFormModel>())) .ShouldHave() .InvalidModelState() .AndAlso() .ShouldReturn() .View(With.Default <ArticleFormModel>());
public void GetIndexShouldReturnDefaultViewWithCorrectModel(int total, bool arePublic, int expected) => MyMvc .Pipeline() .ShouldMap("/") .To <HomeController>(c => c.Index()) .Which(controller => controller .WithData(ArticleTestData.GetArticles(total, arePublic))) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleListingServiceModel> >() .Passing(articles => articles.Count.ShouldBe(expected)));
public void GetDetailsShouldReturnViewWithCorrectModelWhenPublicArticleAndAnonymousUser() => MyMvc .Pipeline() .ShouldMap("/Articles/Details/1") .To <ArticlesController>(c => c.Details(1)) .Which(controller => controller .WithData(ArticleTestData.GetArticles(1))) .ShouldReturn() .View(view => view .WithModelOfType <ArticleDetailsServiceModel>() .Passing(article => article.Id == 1));
public void GetAllShouldReturnViewWithAllArticles() => MyMvc .Pipeline() .ShouldMap(request => request .WithLocation("/Admin/Articles/All") .WithUser(new[] { ControllerConstants.AdministratorRole })) .To <ArticlesController>(c => c.All()) .Which(controller => controller .WithData(ArticleTestData.GetArticles(1, isPublic: false))) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleNonPublicListingServiceModel> >() .Passing(articles => articles.ShouldNotBeEmpty()));
public void DetailsShouldReturnViewWithCorrectModelWhenCorrectUser( bool isPublic, string username, string role) => MyController <ArticlesController> .Instance() .WithUser(username, new[] { role }) .WithData(ArticleTestData.GetArticles(1, isPublic)) .Calling(c => c.Details(1)) .ShouldReturn() .View(view => view .WithModelOfType <ArticleDetailsServiceModel>() .Passing(article => article.Id == 1));
public void AllShouldReturnDefaultViewWithCorrectModel(int total, int page, int expectedCount) => MyController <ArticlesController> .Instance() .WithData(ArticleTestData.GetArticles(total)) .Calling(c => c.All(page)) .ShouldReturn() .View(view => view .WithModelOfType <ArticleListingViewModel>() .Passing(articleListing => { articleListing.Articles.Count().ShouldBe(expectedCount); articleListing.Total.ShouldBe(total); articleListing.Page.ShouldBe(page); }));
public void MineShouldReturnViewWithCorrectModel() => MyController <ArticlesController> .Instance() .WithUser("Author Id 1", "Author 1") .WithData(ArticleTestData.GetArticles(2, sameUser: false)) .Calling(c => c.Mine()) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleForUserListingServiceModel> >() .Passing(articles => { articles.ShouldNotBeEmpty(); articles.SingleOrDefault(a => a.Author == "Author 1").ShouldNotBeNull(); }));
public void GetAllWithPageShouldReturnDefaultViewWithCorrectModel(int total, int page, int expectedCount) => MyMvc .Pipeline() .ShouldMap($"/Articles/All?page={page}") .To <ArticlesController>(c => c.All(page)) .Which(controller => controller .WithData(ArticleTestData.GetArticles(total))) .ShouldReturn() .View(view => view .WithModelOfType <ArticleListingViewModel>() .Passing(articleListing => { articleListing.Articles.Count().ShouldBe(expectedCount); articleListing.Total.ShouldBe(total); articleListing.Page.ShouldBe(page); }));
public void GetMineShouldReturnViewWithCorrectModel() => MyMvc .Pipeline() .ShouldMap(request => request .WithLocation("/Articles/Mine") .WithUser("Author Id 1", "Author 1")) .To <ArticlesController>(c => c.Mine()) .Which(controller => controller .WithData(ArticleTestData.GetArticles(2, sameUser: false))) .ShouldReturn() .View(view => view .WithModelOfType <List <ArticleForUserListingServiceModel> >() .Passing(articles => { articles.ShouldNotBeEmpty(); articles.SingleOrDefault(a => a.Author == "Author 1").ShouldNotBeNull(); }));
public void ChangeVisibilityShouldChangeArticleAndRedirectToAll() => MyController <ArticlesController> .Instance() .WithData(ArticleTestData.GetArticles(1, isPublic: false)) .Calling(c => c.ChangeVisibility(1)) .ShouldHave() .Data(data => data .WithSet <Article>(set => { var article = set.FirstOrDefault(a => a.IsPublic); article.ShouldNotBeNull(); article.PublishedOn.ShouldNotBeNull(); article.PublishedOn.ShouldBe(new DateTime(1, 1, 1)); })) .AndAlso() .ShouldReturn() .Redirect(redirect => redirect .To <ArticlesController>(c => c.All()));
public void ConfirmDeleteShouldDeleteArticleSetTempDataMessageAndRedirectWhenValidId( int articleId, string username, string role) => MyController <ArticlesController> .Instance() .WithUser(username, new[] { role }) .WithData(ArticleTestData.GetArticles(articleId)) .Calling(c => c.ConfirmDelete(articleId)) .ShouldHave() .Data(data => data .WithSet <Article>(set => set.ShouldBeEmpty())) .AndAlso() .ShouldHave() .TempData(tempData => tempData .ContainingEntryWithKey(ControllerConstants.SuccessMessage)) .AndAlso() .ShouldReturn() .Redirect(redirect => redirect .To <ArticlesController>(c => c.Mine()));
public void EditPostShouldSaveArticleSetTempDataMessageAndRedirectWhenValidModelState( int articleId, string title, string content, string username, string role) => MyController <ArticlesController> .Instance() .WithUser(username, new[] { role }) .WithData(ArticleTestData.GetArticles(1)) .Calling(c => c.Edit(articleId, new ArticleFormModel { Title = $"Edit {title}", Content = $"Edit {content}" })) .ShouldHave() .ValidModelState() .AndAlso() .ShouldHave() .Data(data => data .WithSet <Article>(set => { set.ShouldNotBeEmpty(); var article = set.SingleOrDefault(a => a.Id == articleId); article.ShouldNotBeNull(); article.Title.ShouldBe($"Edit {title}"); article.Content.ShouldBe($"Edit {content}"); })) .AndAlso() .ShouldHave() .TempData(tempData => tempData .ContainingEntryWithKey(ControllerConstants.SuccessMessage)) .AndAlso() .ShouldReturn() .Redirect(redirect => redirect .To <ArticlesController>(c => c.Mine()));
public void GetMineShouldChangeArticleAndRedirectToAll() => MyMvc .Pipeline() .ShouldMap(request => request .WithLocation("/Admin/Articles/ChangeVisibility/1") .WithUser(new[] { ControllerConstants.AdministratorRole })) .To <ArticlesController>(c => c.ChangeVisibility(1)) .Which(controller => controller .WithData(ArticleTestData.GetArticles(1, isPublic: false))) .ShouldHave() .Data(data => data .WithSet <Article>(set => { var article = set.FirstOrDefault(a => a.IsPublic); article.ShouldNotBeNull(); article.PublishedOn.ShouldNotBeNull(); article.PublishedOn.ShouldBe(new DateTime(1, 1, 1)); })) .AndAlso() .ShouldReturn() .Redirect(redirect => redirect .To <ArticlesController>(c => c.All()));