예제 #1
0
        public AddDraftResult AddDraft(string title)
        {
            try
            {
                string postTitle = title.Trim();

                if (String.IsNullOrWhiteSpace(postTitle))
                {
                    return new AddDraftResult { Success = false };
                }

                string postSlug = slugifier.Slugify(postTitle);
                string uniqueSlug = slugManager.GetUniqueSlug(postSlug);
                DateTime currentTime = DateTime.UtcNow;

                var db = Database.Open();
                var post = db.Posts.Insert(Title: postTitle, UrlSlug: uniqueSlug, IsPublished: false, CreatedOn: currentTime, LastUpdatedOn: currentTime);

                var addResult = new AddDraftResult { Success = true, Id = post.PostId, Title = post.Title, Url = "/admin/posts/edit/" + post.PostId };

                return addResult;
            }
            catch (Exception error)
            {
                return new AddDraftResult { Success = false };
            }
        }
예제 #2
0
        public void Add_returns_correct_json()
        {
            var adapter = new InMemoryAdapter();
            Database.UseMockAdapter(adapter);

            var postStore = A.Fake<IPostStore>();
            var addDraftResult = new AddDraftResult
                {
                    Id = 1,
                    Success = true,
                    Title = "The Title",
                    Url = "/admin/posts/edit/1"
                };

            A.CallTo(() => postStore.AddDraft("The Title")).Returns(addDraftResult);

            FakeRootPathProvider.RootPath = "../../../Markie";

            var bootstrapper = new ConfigurableBootstrapper(with =>
                {
                    with.RootPathProvider(new FakeRootPathProvider());
                    with.Dependency<FakePasswordService>();
                    with.Dependency(postStore);
                    with.RequestStartup((container, pipelines, context) =>
                        {
                            var formsAuthConfiguration = new FormsAuthenticationConfiguration()
                                {
                                    RedirectUrl = "~/admin/login",
                                    UserMapper = new UserMapper()
                                };

                            FormsAuthentication.Enable(pipelines, formsAuthConfiguration);
                        });
                });
            var browser = new Browser(bootstrapper);

            var jsonResult = browser.Post("/admin/posts/add", with =>
                {
                    with.HttpRequest();
                    with.FormValue("title", "The Title");
                });

            var result = Newtonsoft.Json.JsonConvert.DeserializeObject<AddDraftResult>(jsonResult.Body.AsString());

            Assert.AreEqual(addDraftResult.Id, result.Id);
            Assert.AreEqual(addDraftResult.Success, result.Success);
            Assert.AreEqual(addDraftResult.Title, result.Title);
            Assert.AreEqual(addDraftResult.Url, result.Url);
        }