gemoire-1.0.0: test/Case/Gemlog.hs
{-# LANGUAGE OverloadedStrings #-}
module Case.Gemlog
( gemlog
) where
import Data.HashMap.Strict (empty, fromList, singleton)
import Test.HUnit (Test, (~=?))
import Gemoire.Gemlog.Feed (escapeFeed, lastModified, sortPosts)
import Gemoire.Gemlog.Post (parsePost)
gemlog :: [Test]
gemlog = feeds <> posts
feeds :: [Test]
feeds =
let post =
[ fromList [("post", "1"), ("modified", "2024-08-17T05:00:00+00:00")]
, fromList [("post", "2"), ("modified", "2024-08-17T09:00:00+00:00")]
, fromList [("post", "3"), ("modified", "2024-11-14T13:47:01+00:00")]
]
feed =
fromList
[ ("test_url", "url test")
, ("base", "also'url")
, ("entries", "as&is")
, ("other", "<escaped>")
]
in [ [ fromList [("post", "3"), ("modified", "2024-11-14T13:47:01+00:00")]
, fromList [("post", "2"), ("modified", "2024-08-17T09:00:00+00:00")]
, fromList [("post", "1"), ("modified", "2024-08-17T05:00:00+00:00")]
]
~=? sortPosts post
, fromList [("modified", "2024-11-14T13:47:01+00:00"), ("modified_date", "2024-11-14")]
~=? lastModified post
, fromList
[ ("test_url", "url%20test")
, ("base", "also%27url")
, ("entries", "as&is")
, ("other", "<escaped>")
]
~=? escapeFeed False feed
]
posts :: [Test]
posts =
[ fromList [("post", "post")] ~=? parsePost empty "post"
, fromList [("title", "heading"), ("post", "# heading")] ~=? parsePost empty "# heading"
, fromList [("data", "extras"), ("post", "with extras")]
~=? parsePost (singleton "data" "extras") "with {$data$}"
, fromList [("data", "variables"), ("post", "with variables")]
~=? parsePost empty "{= data variables =}\CR\LFwith {$data$}"
]