public async Task<ActionResult> New(NewPostViewModel model) { if (!this.ModelState.IsValid) { return View(model); } BlogPost entity = new BlogPost() { Body = model.Body, Preview = model.Preview, PublishedAt = DateTime.UtcNow, Title = model.Title, }; using (var context = _contextFactory()) { context.Posts.Add(entity); await context.SaveChangesAsync(); } return await Latest(); }
public async Task BlogController_Post_Returns_Model_If_Post_With_Id_Was_Found() { // Arrange BlogPost entity = new BlogPost() { Body = "Body", Preview = "Preview", PublishedAt = DateTime.UtcNow, Title = "Title", }; int id; // Use the shared database as this test only inserts // so other tests cannot interfer with its asserts. using (BlogContext context = new BlogContext(TestSetup.ConnectionString)) { context.Posts.Add(entity); await context.SaveChangesAsync(); id = entity.Id; } using (BlogController target = CreateTarget()) { // Act ActionResult result = await target.Post(id); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(ViewResult)); ViewResult view = result as ViewResult; Assert.IsNotNull(view.Model); Assert.IsInstanceOfType(view.Model, typeof(BlogPostViewModel)); Assert.AreEqual(string.Empty, view.ViewName); BlogPostViewModel model = view.Model as BlogPostViewModel; Assert.AreEqual(entity.Body, model.Body); Assert.AreEqual(id, model.Id); Assert.AreEqual(entity.Preview, model.Preview); Assert.IsTrue(entity.PublishedAt >= model.PublishedAt.AddMilliseconds(model.PublishedAt.Millisecond * -1)); Assert.AreEqual(entity.Title, model.Title); } }