diff --git a/src/NoteHub/views/pages.clj b/src/NoteHub/views/pages.clj index 127876b..8e20144 100644 --- a/src/NoteHub/views/pages.clj +++ b/src/NoteHub/views/pages.clj @@ -73,22 +73,21 @@ [:div#preview-start-line.hidden] [:article#preview])) -(defn wrap [theme md-text] - (let [title (-?> md-text (split #"\n") first (sreplace #"[_\*#]" ""))] - (common/layout {:theme theme} title [:article (md-to-html md-text)]))) - -(defn get-md [[[year month day] :as date] title] - (let [post (get-note date title)] - (if post post (status 404 "")))) +(defn wrap [params md-text] + (if md-text + (let [title (-?> md-text (split #"\n") first (sreplace #"[_\*#]" ""))] + (common/layout params title [:article (md-to-html md-text)])) + (status 404 (get-page 404)))) (defpage "/:year/:month/:day/:title/theme/:theme" {:keys [year month day title theme]} - (wrap theme (get-md [year month day] title))) + (wrap {:theme theme} (get-note [year month day] title))) (defpage "/:year/:month/:day/:title" {:keys [year month day title]} - (wrap :default (get-md [year month day] title))) + (wrap {:theme :default} (get-note [year month day] title))) (defpage "/:year/:month/:day/:title/export" {:keys [year month day title]} - (get-md [year month day] title)) + (let [md-text (get-note [year month day] title)] + (if md-text md-text (get-page 404)))) ; New Note Posting (defpage [:post "/post-note"] {:keys [draft session-key session-value]} diff --git a/test/NoteHub/test/views/pages.clj b/test/NoteHub/test/views/pages.clj index fcf6059..50d7d72 100644 --- a/test/NoteHub/test/views/pages.clj +++ b/test/NoteHub/test/views/pages.clj @@ -1,19 +1,49 @@ (ns NoteHub.test.views.pages (:use [NoteHub.views.pages] [noir.util.test] + [NoteHub.storage] [clojure.test])) +(def date [2012 6 3]) +(def test-title "some-title") +(def test-note "# This is a test note.\nHello _world_.") + +(defn create-testnote-fixture [f] + (set-note date test-title test-note) + (f) + (delete-note date test-title)) + +(use-fixtures :each create-testnote-fixture) + +(defn url [& args] + (apply str (interpose "/" (cons "" args)))) + +(is (= (url 2010 05 06 "test-title" "export") "/2010/5/6/test-title/export")) + +(deftest testing-fixture + (testing "Was a not created?" + (is (= (get-note date test-title) test-note)) + (is (note-exists? date test-title)))) + (deftest helper-functions (testing "Markdown generation" (is (= "

hello world

test code

" (md-to-html "#_hello_ __world__\ntest `code`"))))) +(deftest export-test + (testing "Markdown export" + (has-body (send-request (url 2012 6 3 "some-title" "export")) test-note))) (deftest requests (testing "HTTP Statuses" (testing "of a wrong access" (has-status (send-request "/wrong-page") 404)) + (has-status (send-request (url 2012 6 3 "lol")) 404) + (has-status (send-request (url 2012 6 4 "wrong-title")) 404) (testing "of corrupt note-post" - (has-status (send-request [:post "/2012/06/04/wrong-title"]) 404) (has-status (send-request [:post "/post-note"]) 400)) (testing "valid accesses" + (has-status (send-request "/new") 200) + (has-status (send-request (url 2012 6 3 "some-title")) 200) + (has-status (send-request (url 2012 6 3 "some-title" "export")) 200) + (has-status (send-request (url 2012 6 3 "some-title" "theme" "dark")) 200) (has-status (send-request "/") 200))))