@@ -1,67 +1,65 @@
1+--------------------------------------------------------------------------------
12{-# LANGUAGE OverloadedStrings #-}
2−{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}
33module Hakyll.Core.Rules.Tests
44 ( tests
55 ) where
66
7−import qualified Data.Map as M
8−import qualified Data.Set as S
97
10−import Test.Framework
11−import Test.Framework.Providers.HUnit
12−import Test.HUnit hiding (Test)
8+--------------------------------------------------------------------------------
9+import qualified Data.Set as S
10+import Test.Framework (Test, testGroup)
11+import Test.Framework.Providers.HUnit (testCase)
12+import Test.HUnit (Assertion, assert, (@=?))
1313
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
2214
23−tests :: [Test]
24−tests =
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
22+import TestSuite.Util
23+
24+
25+--------------------------------------------------------------------------------
26+tests :: Test
27+tests = testGroup "Hakyll.Core.Rules.Tests"
2528 [ testCase "runRules" rulesTest
2629 ]
2730
28−-- | Main test
29−--
31+
32+--------------------------------------------------------------------------------
3033rulesTest :: Assertion
31−rulesTest = do
32− p <- provider
33− let ruleSet = runRules rules p
34− assert $ expected == S.fromList (map fst (rulesCompilers ruleSet))
34+rulesTest = withTestStore $ \store -> do
35+ provider <- newTestProvider store
36+ ruleSet <- runRules rules provider
37+ let identifiers = S.fromList $ map fst $ rulesCompilers ruleSet
38+ routes = rulesRoutes ruleSet
39+
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")
3544 where
36− expected = S.fromList
37− [ Identifier Nothing "posts/a-post.markdown"
38− , Identifier Nothing "posts/some-other-post.markdown"
39− , Identifier (Just "raw") "posts/a-post.markdown"
40− , Identifier (Just "raw") "posts/some-other-post.markdown"
45+ raw = setVersion (Just "raw")
46+ expected =
47+ [ "example.md"
48+ , "russian.md"
49+ , raw "example.md"
50+ , raw "russian.md"
4151 ]
4252
43−-- | Dummy resource provider
44−--
45−provider :: IO ResourceProvider
46−provider = dummyResourceProvider $ M.fromList $ map (flip (,) "No content")
47− [ "posts/a-post.markdown"
48− , "posts/some-other-post.markdown"
49− ]
5053
51−-- | Example rules
52−--
53−rules :: Rules
54+--------------------------------------------------------------------------------
55+rules :: Rules ()
5456rules = do
5557 -- Compile some posts
56− match "posts/*" $ do
58+ match "*.md" $ do
5759 route $ setExtension "html"
5860 compile pageCompiler
5961
6062 -- Compile them, raw
61− group "raw" $ do
63+ match "*.md" $ version "raw" $ do
6264 route idRoute
63− match "posts/*" $ do
64− route $ setExtension "html"
65− compile getResourceString
66−
67− return ()
65+ compile getResourceString