base test setup

This commit is contained in:
Lucy Cifferello
2020-03-12 17:13:58 -06:00
parent b3d092d343
commit a7a20a627e
3 changed files with 60 additions and 0 deletions

20
test/Handler/AppSpec.hs Normal file
View File

@@ -0,0 +1,20 @@
{-# LANGUAGE TypeFamilies #-}
module Handler.AppSpec (spec) where
import Startlude
import TestImport
spec :: Spec
spec = do
describe "GET /apps" $ do
withApp $ it "returns list of apps" $ do
request $ do
setMethod "GET"
setUrl ("/apps" :: Text)
printBody
bodyContains ""
statusIs 200

11
test/Main.hs Normal file
View File

@@ -0,0 +1,11 @@
module Main where
import Test.Hspec.Runner
import qualified Spec
import Test.Hspec.Formatters
import qualified Handler.AppSpec as A
main :: IO ()
main = do
_ <- A.spec
hspecWith defaultConfig { configFormatter = Just progress } Spec.spec

29
test/TestImport.hs Normal file
View File

@@ -0,0 +1,29 @@
{-# LANGUAGE QuasiQuotes #-}
module TestImport
( module TestImport
, module X
) where
import Startlude
import Application (makeFoundation, makeLogWare)
import Foundation as X
import Test.Hspec as X
import Yesod.Default.Config2 (useEnv, loadYamlSettings)
import Yesod.Test as X
import Yesod.Core.Unsafe (fakeHandlerGetLogger)
runHandler :: Handler a -> YesodExample AgentCtx a
runHandler handler = do
app <- getTestYesod
fakeHandlerGetLogger appLogger app handler
withApp :: SpecWith (TestApp AgentCtx) -> Spec
withApp = before $ do
settings <- loadYamlSettings
["config/settings.yml"]
[]
useEnv
foundation <- makeFoundation settings
logWare <- liftIO $ makeLogWare foundation
return (foundation, logWare)