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}"));
Ejemplo n.º 11
0
 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>());
Ejemplo n.º 13
0
 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()));