{-# LANGUAGE OverloadedStrings #-} module Hakyll.Web.Template.Tests ( tests ) where import Test.Framework import Test.HUnit hiding (Test) import qualified Data.Map as M import Hakyll.Web.Page import Hakyll.Web.Template import Hakyll.Web.Template.Read import TestSuite.Util tests :: [Test] tests = fromAssertions "applyTemplate" -- Hakyll templates [ applyTemplateAssertion readTemplate applyTemplate ("bar" @=?) "$foo$" [("foo", "bar")] , applyTemplateAssertion readTemplate applyTemplate ("$ barqux" @=?) "$$ $foo$$bar$" [("foo", "bar"), ("bar", "qux")] , applyTemplateAssertion readTemplate applyTemplate ("$foo$" @=?) "$foo$" [] -- Hamlet templates , applyTemplateAssertion readHamletTemplate applyTemplate (("noticeA paragraph" @=?) . filter (/= '\n')) "\n\ \ #{title}\n\ \<body>\n\ \ A paragraph\n" [("title", "notice")] -- Missing keys , let missing "foo" = "bar" missing "bar" = "qux" missing x = reverse x in applyTemplateAssertion readTemplate (applyTemplateWith missing) ("bar foo ver" @=?) "$foo$ $bar$ $rev$" [("bar", "foo")] ] -- | Utility function to create quick template tests -- applyTemplateAssertion :: (String -> Template) -> (Template -> Page String -> Page String) -> (String -> Assertion) -> String -> [(String, String)] -> Assertion applyTemplateAssertion parser apply correct template page = correct $ pageBody (apply (parser template) (fromMap $ M.fromList page))