@@ -1,67 +1,65 @@
1+--------------------------------------------------------------------------------
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
2−{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}
3module Hakyll.Core.Rules.Tests
3module Hakyll.Core.Rules.Tests
7−import qualified Data.Map as M
8−import qualified Data.Set as S
8+--------------------------------------------------------------------------------
9+import qualified Data.Set as S
10−import Test.Framework
10+import Test.Framework (Test, testGroup)
11−import Test.Framework.Providers.HUnit
11+import Test.Framework.Providers.HUnit (testCase)
12−import Test.HUnit hiding (Test)
12+import Test.HUnit (Assertion, assert, (@=?))
14−import Hakyll.Core.Rules
15−import Hakyll.Core.Rules.Internal
16−import Hakyll.Core.Identifier
17−import Hakyll.Core.Routes
18−import Hakyll.Core.Compiler
19−import Hakyll.Core.Resource.Provider
20−import Hakyll.Core.Resource.Provider.Dummy
21−import Hakyll.Web.Page
15+--------------------------------------------------------------------------------
16+import Hakyll.Core.Compiler
17+import Hakyll.Core.Identifier
18+import Hakyll.Core.Routes
19+import Hakyll.Core.Rules
20+import Hakyll.Core.Rules.Internal
21+import Hakyll.Web.Page
25+--------------------------------------------------------------------------------
23−tests :: [Test]
26+tests :: Test
24−tests =
27+tests = testGroup "Hakyll.Core.Rules.Tests"
25 [ testCase "runRules" rulesTest
28 [ testCase "runRules" rulesTest
29−--
32+--------------------------------------------------------------------------------
30rulesTest :: Assertion
33rulesTest :: Assertion
31−rulesTest = do
34+rulesTest = withTestStore $ \store -> do
32− p <- provider
35+ provider <- newTestProvider store
33− let ruleSet = runRules rules p
36+ ruleSet <- runRules rules provider
34− assert $ expected == S.fromList (map fst (rulesCompilers ruleSet))
37+ let identifiers = S.fromList $ map fst $ rulesCompilers ruleSet
38+ routes = rulesRoutes ruleSet
40+ -- Test that we have some identifiers and that the routes work out
41+ assert $ all (`S.member` identifiers) expected
42+ Just "example.html" @=? runRoutes routes "example.md"
43+ Just "example.md" @=? runRoutes routes (raw "example.md")
45+ raw = setVersion (Just "raw")
36− expected = S.fromList
46+ expected =
37− [ Identifier Nothing "posts/a-post.markdown"
47+ [ "example.md"
38− , Identifier Nothing "posts/some-other-post.markdown"
48+ , "russian.md"
39− , Identifier (Just "raw") "posts/a-post.markdown"
49+ , raw "example.md"
40− , Identifier (Just "raw") "posts/some-other-post.markdown"
50+ , raw "russian.md"
43−-- | Dummy resource provider
45−provider :: IO ResourceProvider
46−provider = dummyResourceProvider $ M.fromList $ map (flip (,) "No content")
47− [ "posts/a-post.markdown"
48− , "posts/some-other-post.markdown"
51−-- | Example rules
54+--------------------------------------------------------------------------------
53−rules :: Rules
55+rules :: Rules ()
55 -- Compile some posts
57 -- Compile some posts
56− match "posts/*" $ do
58+ match "*.md" $ do
57 route $ setExtension "html"
59 route $ setExtension "html"
58 compile pageCompiler
60 compile pageCompiler
60 -- Compile them, raw
62 -- Compile them, raw
61− group "raw" $ do
63+ match "*.md" $ version "raw" $ do
62 route idRoute
64 route idRoute
64− route $ setExtension "html"
65− compile getResourceString
65+ compile getResourceString