about summary refs log blame commit diff
path: root/test/Xanthous/OrphansSpec.hs
blob: 3fe79ee5631325dbeea6d9d60eee206f6b82f51a (plain) (tree)






























                                                                        
{-# LANGUAGE BlockArguments #-}
module Xanthous.OrphansSpec where

import Test.Prelude
import Xanthous.Orphans
import Text.Mustache
import Text.Megaparsec (errorBundlePretty)

import Xanthous.Orphans ()

main :: IO ()
main = defaultMain test

test :: TestTree
test = testGroup "Xanthous.Orphans"
  [ localOption (QuickCheckTests 50)
  . localOption (QuickCheckMaxSize 10)
  $ testGroup "Template"
    [ testProperty "ppTemplate / compileMustacheText " \tpl ->
        let src = ppTemplate tpl
            res :: Either String Template
            res = over _Left errorBundlePretty
                $ compileMustacheText (templateActual tpl) src
            expected = templateCache tpl ^?! at (templateActual tpl)
        in
          counterexample (unpack src)
          $ Right expected === do
            (Template actual cache) <- res
            maybe (Left "Template not found") Right $ cache ^? at actual
    ]
  ]