File: SubSub.hs

package info (click to toggle)
haskell-yesod-core 1.6.26.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 672 kB
  • sloc: haskell: 7,833; makefile: 5
file content (50 lines) | stat: -rw-r--r-- 1,266 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}

module YesodCoreTest.SubSub where

import Test.Hspec

import Yesod.Core
import Network.Wai.Test
import qualified Data.Text as T
import qualified Data.ByteString.Lazy.Char8 as L8

import YesodCoreTest.SubSubData

data App = App { getOuter :: OuterSubSite }

mkYesod "App" [parseRoutes|
/ OuterSubSiteR OuterSubSite getOuter
|]

instance Yesod App

getSubR :: SubHandlerFor InnerSubSite master T.Text
getSubR = return $ T.pack "sub"

instance YesodSubDispatch OuterSubSite master where
  yesodSubDispatch = $(mkYesodSubDispatch resourcesOuterSubSite)

instance YesodSubDispatch InnerSubSite master where
  yesodSubDispatch = $(mkYesodSubDispatch resourcesInnerSubSite)

app :: App
app = App { getOuter = OuterSubSite { getInner = InnerSubSite }}

runner :: Session () -> IO ()
runner f = toWaiApp app >>= runSession f

case_subSubsite :: IO ()
case_subSubsite = runner $ do
  res <- request defaultRequest
  assertBody (L8.pack "sub") res
  assertStatus 200 res

subSubTest :: Spec
subSubTest = describe "YesodCoreTest.SubSub" $ do
  it "sub_subsite" case_subSubsite