public async Task<ActionResult> Save(string slug, PostViewModel postViewModel) { var result = await Resolve<SavePostCommand>().Execute(slug, postViewModel); var routeParameters = BuildRouteParametersForPost(result.Slug, result.Version); if (Request.IsAjaxRequest()) { return Json(new { status = "ok", location = Url.Action("Show", routeParameters) }); } return RedirectToAction("Show", routeParameters); }
public ActionResult Index() { var viewModel = new PostViewModel(); var builder = new StringBuilder(); builder.AppendLine("// The value returned is displayed in the results panel below"); builder.AppendLine("return \"Hello, world!\";"); var code = builder.ToString(); viewModel.Post.Content = code; viewModel.Errors = compiler.GetCompilationErrors(code); return View("Show", viewModel); }
public ActionResult Index() { var classesBuilder = new StringBuilder(); classesBuilder.AppendLine("public interface IPerson"); classesBuilder.AppendLine("{"); classesBuilder.AppendLine(" string Name { get; }"); classesBuilder.AppendLine(); classesBuilder.AppendLine(" string Greet();"); classesBuilder.AppendLine("}"); classesBuilder.AppendLine(); classesBuilder.AppendLine("class Person : IPerson"); classesBuilder.AppendLine("{"); classesBuilder.AppendLine(" public Person(string name)"); classesBuilder.AppendLine(" {"); classesBuilder.AppendLine(" Name = name;"); classesBuilder.AppendLine(" }"); classesBuilder.AppendLine(); classesBuilder.AppendLine(" public string Name { get; private set; }"); classesBuilder.AppendLine(); classesBuilder.AppendLine(" public string Greet()"); classesBuilder.AppendLine(" {"); classesBuilder.AppendLine(" if (Name == null)"); classesBuilder.AppendLine(" return \"Hello, stranger!\";"); classesBuilder.AppendLine(); classesBuilder.AppendLine(" return string.Format(\"Hello, {0}!\", Name);"); classesBuilder.AppendLine(" }"); classesBuilder.AppendLine("}"); var commandBuilder = new StringBuilder(); commandBuilder.AppendLine("IPerson person = new Person(name: null);"); commandBuilder.AppendLine(""); commandBuilder.AppendLine("return person.Greet();"); var post = new Post { Content = commandBuilder.ToString(), Classes = classesBuilder.ToString() }; var viewModel = new PostViewModel { Post = post, Errors = compiler.GetCompilationErrors(post.Content, post.Classes) }; return View("Show", viewModel); }
public ActionResult Index() { var post = BuildSamplePost(); var errors = compiler.GetCompilationErrors(post) .Select(x => new EditorError { Location = x.Location.GetLineSpan(true), Message = x.Info.GetMessage() }); var viewModel = new PostViewModel(post) { Errors = errors }; return View("Show", viewModel); }
public static PostViewModel Create(Post post) { if (post == null) { return null; } var model = new PostViewModel { Slug = post.Slug, Version = post.Version, AuthorId = post.AuthorId, Documents = post.Documents .Select(doc => new DocumentModel { Name = doc.Name, Text = doc.GetText() }) .ToArray() }; return model; }
public void Validate_returns_JsonResult() { var viewModel = new PostViewModel(); var mockValidator = new Mock<ICodeValidator>(); var repository = Mock.Of<IPostRepository>(); mockValidator.Setup(x => x.GetCompilationErrors(It.IsAny<Post>())); var controller = new HomeController(repository, mockValidator.Object); var result = controller.Validate(viewModel) as JsonResult; Assert.NotNull(result); mockValidator.Verify(x => x.GetCompilationErrors(It.IsAny<Post>()), Times.Once()); }
public void Save_returns_redirect_to_Show() { var postViewModel = new PostViewModel(); var validator = Mock.Of<ICodeValidator>(); var mockRepository = new Mock<IPostRepository>(); mockRepository.Setup(x => x.Save(It.IsAny<string>(), It.IsAny<Post>())).Returns<string, Post>((s, x) => x); var controller = new HomeController(mockRepository.Object, validator); var result = controller.Save(null, postViewModel) as RedirectToRouteResult; Assert.NotNull(result); }
public ActionResult Show(string slug, int? version) { if (version <= 1) { // Redirect the user to /:slug instead of /:slug/1 return RedirectToActionPermanent("Show", "Home", new { slug = slug, version = (int?)null }); } version = version ?? 1; var post = db.GetVersion(slug, version.Value); if (post == null) { return PostNotFound(); } var errors = compiler.GetCompilationErrors(post) .Select(x => new EditorError { Location = x.Location.GetLineSpan(true), Message = x.Info.GetMessage() }); var viewModel = new PostViewModel(post) { Errors = errors }; if (Request.IsAjaxRequest()) { return Json(new { status = "ok", data = viewModel }, JsonRequestBehavior.AllowGet); } return View("Show", viewModel); }
public ActionResult Validate(PostViewModel postViewModel) { var errors = Resolve<ErrorsInPostQuery>().Execute(postViewModel.ToPost()); return Json(new { status = "ok", data = errors }); }
public ActionResult Show(string slug, int? version) { if (version <= 1) { // Redirect the user to /:slug instead of /:slug/1 return RedirectToActionPermanent("Show", "Home", new { slug = slug, version = (int?)null }); } var content = db.GetVersion(slug, version ?? 1); if (content == null) { return HttpNotFound(); } var viewModel = new PostViewModel { Post = content, Errors = compiler.GetCompilationErrors(content.Content) }; if (Request.IsAjaxRequest()) { return Json(new { status = "ok", data = viewModel }, JsonRequestBehavior.AllowGet); } return View("Show", viewModel); }
public ActionResult Show(string slug, int? version) { if (version <= 1) { // Redirect the user to /:slug instead of /:slug/1 return RedirectToActionPermanent("Show", "Home", new { slug = slug, version = (int?)null }); } version = version ?? 1; var post = db.GetVersion(slug, version.Value); if (post == null) { Response.StatusCode = 404; ViewBag.Message = string.Format("code snippet of '{0}' ver. {1} was not found.", slug, version.Value); return View("Error"); } var viewModel = new PostViewModel { Post = post, Errors = compiler.GetCompilationErrors(post.Content, post.Classes) }; if (Request.IsAjaxRequest()) { return Json(new { status = "ok", data = viewModel }, JsonRequestBehavior.AllowGet); } return View("Show", viewModel); }
public Task<Post> Execute(string slug, PostViewModel postViewModel) { var result = posts.Save(slug, postViewModel.ToPost()); return Task.FromResult(result); }