50 lines
1004 B
Haskell
50 lines
1004 B
Haskell
{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE FlexibleInstances #-}
|
|
module YesodCoreTest.Cache (cacheTest, Widget) where
|
|
|
|
import Test.Hspec
|
|
import Test.Hspec.HUnit()
|
|
|
|
import Network.Wai
|
|
import Network.Wai.Test
|
|
|
|
import Yesod.Core
|
|
|
|
data C = C
|
|
|
|
key :: CacheKey Int
|
|
key = $(mkCacheKey)
|
|
|
|
key2 :: CacheKey Int
|
|
key2 = $(mkCacheKey)
|
|
|
|
mkYesod "C" [parseRoutes|/ RootR GET|]
|
|
|
|
instance Yesod C
|
|
|
|
getRootR :: Handler ()
|
|
getRootR = do
|
|
Nothing <- cacheLookup key
|
|
cacheInsert key 5
|
|
Just 5 <- cacheLookup key
|
|
cacheInsert key 7
|
|
Just 7 <- cacheLookup key
|
|
Nothing <- cacheLookup key2
|
|
cacheDelete key
|
|
Nothing <- cacheLookup key
|
|
return ()
|
|
|
|
cacheTest :: Spec
|
|
cacheTest =
|
|
describe "Test.Cache" $ do
|
|
it "works" works
|
|
|
|
runner :: Session () -> IO ()
|
|
runner f = toWaiApp C >>= runSession f
|
|
|
|
works :: IO ()
|
|
works = runner $ do
|
|
res <- request defaultRequest { pathInfo = [] }
|
|
assertStatus 200 res
|