Browse Source

bugs fixed; tests repaired

master
Christian Mueller 14 years ago
parent
commit
ec449f7660
  1. 19
      src/NoteHub/storage.clj
  2. 2
      src/NoteHub/views/common.clj
  3. 155
      src/NoteHub/views/css_generator.clj
  4. 11
      src/NoteHub/views/pages.clj
  5. 23
      test/NoteHub/test/views/pages.clj

19
src/NoteHub/storage.clj

@ -12,15 +12,15 @@
(defn set-note [date title text] (defn set-note [date title text]
(let [key (build-key date title)] (let [key (build-key date title)]
(do (redis/hset db note key text)))
(redis/hset db views key 0)
(redis/hset db note key text))))
(defn get-note [date title] (defn get-note [date title]
(let [key (build-key date title)] (let [key (build-key date title)
(do text (redis/hget db note key)]
(redis/hincrby db views key 1) (when text
(redis/hget db note key)))) (do
(redis/hincrby db views key 1)
text))))
(defn get-views [date title] (defn get-views [date title]
(redis/hget db views (build-key date title))) (redis/hget db views (build-key date title)))
@ -29,4 +29,7 @@
(redis/hexists db note (build-key date title))) (redis/hexists db note (build-key date title)))
(defn delete-note [date title] (defn delete-note [date title]
(redis/hdel db note (build-key date title))) (let [key (build-key date title)]
(do
(redis/hdel db views key)
(redis/hdel db note key))))

2
src/NoteHub/views/common.clj

@ -16,7 +16,7 @@
(apply str (apply str
(interpose "|" (concat ["PT+Serif:700" "Noticia+Text:700"] (interpose "|" (concat ["PT+Serif:700" "Noticia+Text:700"]
(vals (select-keys params (vals (select-keys params
[:header-font :text-font]))))) [:header-font :text-font])))))
"&subset=latin,cyrillic") " " "+") "&subset=latin,cyrillic") " " "+")
:rel "stylesheet" :rel "stylesheet"
:type "text/css"}] :type "text/css"}]

155
src/NoteHub/views/css_generator.clj

@ -11,14 +11,15 @@
(def page-width (def page-width
(mixin (mixin
:width :800px)) :width :800px))
(def helvetica-neue (def helvetica-neue
(mixin (mixin
:font-weight 300 :font-weight 300
:font-family (gen-fontlist "Helvetica Neue" :font-family (gen-fontlist "Helvetica Neue"
"Helvetica" "Helvetica"
"Arial" "Arial"
"Lucida Grande" "Lucida Grande"
"sans-serif"))) "sans-serif")))
(def central-element (def central-element
(mixin (mixin
page-width page-width
@ -29,13 +30,13 @@
(defn color [theme tone] (defn color [theme tone]
(get-in {:dark {:background :#333 (get-in {:dark {:background :#333
:foreground :#ccc :foreground :#ccc
:background-halftone :#444 :background-halftone :#444
:foreground-halftone :#bbb } :foreground-halftone :#bbb }
:default {:background :#fff :default {:background :#fff
:foreground :#333 :foreground :#333
:background-halftone :#efefef :background-halftone :#efefef
:foreground-halftone :#888 }} [theme tone])) :foreground-halftone :#888 }} [theme tone]))
(defn global-css [params] (defn global-css [params]
(let [theme (params :theme) (let [theme (params :theme)
@ -46,69 +47,71 @@
foreground (color theme :foreground) foreground (color theme :foreground)
background-halftone (color theme :background-halftone) background-halftone (color theme :background-halftone)
foreground-halftone (color theme :foreground-halftone)] foreground-halftone (color theme :foreground-halftone)]
(css (css
(rule ".landing-button" (rule ".landing-button"
:box-shadow [0 :2px :5px :#aaa] :box-shadow [0 :2px :5px :#aaa]
:text-decoration :none :text-decoration :none
:font-size :1.5em :font-size :1.5em
:background :#0a2 :background :#0a2
:color :white :color :white
:border :none :border :none
:border-radius :10px :border-radius :10px
:padding :10px :padding :10px
helvetica-neue helvetica-neue
(rule "&:hover" (rule "&:hover"
:background :#0b2)) :background :#0b2))
(rule "html, body" (rule "html, body"
:background background :background background
:color foreground :color foreground
:margin 0 :margin 0
:padding 0) :padding 0)
(rule "#hero" (rule ".helvetica-neue"
:padding-top :5em helvetica-neue)
:padding-bottom :5em (rule "#hero"
:text-align :center :padding-top :5em
(rule "h2" :padding-bottom :5em
helvetica-neue)) :text-align :center
(rule "article" (rule "h2"
central-element helvetica-neue))
:line-height (% 140) (rule "article"
:font-family text-fonts central-element
:font-size :1.2em :line-height (% 140)
(rule "& > h1:first-child" :font-family text-fonts
:text-align :center :font-size :1.2em
:margin :2em)) (rule "& > h1:first-child"
(rule "pre" :text-align :center
:border-radius :3px :margin :2em))
:padding :1em (rule "pre"
:border [:1px :dotted foreground-halftone] :border-radius :3px
:background background-halftone) :padding :1em
(rule "*:focus" :border [:1px :dotted foreground-halftone]
:outline [:0px :none :transparent]) :background background-halftone)
(rule "textarea" (rule "*:focus"
page-width :outline [:0px :none :transparent])
:font-family :Courier (rule "textarea"
:font-size :1.2em page-width
:border :none :font-family :Courier
; TODO: make this dynamic :font-size :1.2em
:height :500px :border :none
:margin-bottom :2em) ; TODO: make this dynamic
(rule ".hidden" :height :500px
:display :none) :margin-bottom :2em)
(rule ".button" (rule ".hidden"
:border-radius :3px :display :none)
helvetica-neue (rule ".button"
:cursor :pointer :border-radius :3px
:border [:1px :solid foreground] helvetica-neue
:opacity 0.8 :cursor :pointer
:font-size :1em :border [:1px :solid foreground]
:background background) :opacity 0.8
(rule ".central-element" :font-size :1em
central-element) :background background)
(rule "h1" (rule ".central-element"
:font-size :2em) central-element)
(rule "#preview-start-line" (rule "h1"
:border-bottom [:1px :dashed foreground-halftone] :font-size :2em)
:margin-bottom :5em) (rule "#preview-start-line"
(rule "h1, h2, h3, h4" :border-bottom [:1px :dashed foreground-halftone]
:font-family header-fonts)))) :margin-bottom :5em)
(rule "h1, h2, h3, h4"
:font-family header-fonts))))

11
src/NoteHub/views/pages.clj

@ -86,22 +86,21 @@
(defpage "/:year/:month/:day/:title/export" {:keys [year month day title]} (defpage "/:year/:month/:day/:title/export" {:keys [year month day title]}
(let [md-text (get-note [year month day] title)] (let [md-text (get-note [year month day] title)]
(if md-text md-text (get-page 404)))) (if md-text md-text (status 404 (get-page 404)))))
(defpage "/:year/:month/:day/:title/stat" {:keys [year month day title]} (defpage "/:year/:month/:day/:title/stat" {:keys [year month day title]}
(let [views (get-views [year month day] title)] (let [views (get-views [year month day] title)]
(if views (if views
(common/layout "Statistics" (common/layout "Statistics"
[:article [:article.helvetica-neue
[:table {:style "width: 100%"} [:table {:style "width: 100%"}
[:tr [:tr
[:td "Published"] [:td "Published"]
[:td (interpose "-" [year month day])]] [:td (interpose "-" [year month day])]]
[:tr [:tr
[:td "Article views"] [:td "Article views"]
[:td views]] [:td views]]]])
]]) (status 404 (get-page 404)))))
(get-page 404))))
; New Note Posting ; New Note Posting
(defpage [:post "/post-note"] {:keys [draft session-key session-value]} (defpage [:post "/post-note"] {:keys [draft session-key session-value]}

23
test/NoteHub/test/views/pages.clj

@ -34,16 +34,19 @@
(has-body (send-request (url 2012 6 3 "some-title" "export")) test-note))) (has-body (send-request (url 2012 6 3 "some-title" "export")) test-note)))
(deftest requests (deftest requests
(testing "HTTP Statuses" (testing "HTTP Status"
(testing "of a wrong access" (testing "of a wrong access"
(has-status (send-request "/wrong-page") 404)) (has-status (send-request "/wrong-page") 404)
(has-status (send-request (url 2012 6 3 "lol")) 404) (has-status (send-request (url 2012 6 3 "lol" "stat")) 404)
(has-status (send-request (url 2012 6 4 "wrong-title")) 404) (has-status (send-request (url 2012 6 3 "lol" "export")) 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" (testing "of corrupt note-post"
(has-status (send-request [:post "/post-note"]) 400)) (has-status (send-request [:post "/post-note"]) 400))
(testing "valid accesses" (testing "valid accesses"
(has-status (send-request "/new") 200) (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")) 200)
(has-status (send-request (url 2012 6 3 "some-title" "export")) 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 (url 2012 6 3 "some-title" "stat")) 200)
(has-status (send-request "/") 200)))) (has-status (send-request (url 2012 6 3 "some-title")) 200)
(has-status (send-request "/") 200))))

Loading…
Cancel
Save