content: --------------------------------------------------------------------------------
  {-# LANGUAGE OverloadedStrings #-}
  module Hakyll.Web.Feed.Tests
      ( tests
      ) where
  
  
  --------------------------------------------------------------------------------
  import           Test.Tasty       (TestTree, testGroup)
  import           Test.Tasty.HUnit (Assertion, testCase)
  
  
  --------------------------------------------------------------------------------
  import           Hakyll.Core.Compiler
  import           Hakyll.Core.Provider
  import           Hakyll.Web.Feed
  import           Hakyll.Web.Template.Context
  import           TestSuite.Util
  --------------------------------------------------------------------------------
  tests :: TestTree
  tests = testGroup "Hakyll.Web.Feed.Tests"
      [ testCase "validateSucceeds" validateSucceeds
      , testCase "validateFails" validateFails
      ]
  
  validateFails :: Assertion
  validateFails = do
      store <- newTestStore
      provider <- newTestProvider store
  
      item <- testCompilerDone store provider "example.md"
        $ makeItem (resourceFilePath provider "example.md")
  
      testCompilerError store provider "feed.xml"
        (renderRss feedConfiguration ctx [item])
        "Generated feed contains invalid XML (perhaps you id not escape a metadata field?)"
      cleanTestEnv
    where
      title = "invalid & not xml"
      ctx = constField "title" title `mappend`
        constField "description" "" `mappend`
        defaultContext
  
  validateSucceeds :: Assertion
  validateSucceeds = do
      store <- newTestStore
      provider <- newTestProvider store
  
      item <- testCompilerDone store provider "example.md"
        $ makeItem (resourceFilePath provider "example.md")
  
      _ <- testCompilerDone store provider "feed.xml"
        $ renderRss feedConfiguration ctx [item]
      cleanTestEnv
    where
      title = "valid xml"
      ctx = constField "title" title `mappend`
        constField "description" "" `mappend`
        defaultContext
  
  feedConfiguration :: FeedConfiguration
  feedConfiguration = FeedConfiguration
    { feedTitle = "test"
    , feedDescription = "test"
    , feedAuthorName = "test"
    , feedAuthorEmail = ""
    , feedRoot = "example.org"
    }
  