From 515338784b8fc2fb5435ee4e061c092ff754d6cf Mon Sep 17 00:00:00 2001
From: Clint Adams <clint@softwarefreedom.org>
Date: Thu, 24 Oct 2013 15:34:15 -0400
Subject: Use newer persistent and newer Yesod

---
 tests/HomeTest.hs | 46 ++++++++++++++++++++++++++++++----------------
 tests/main.hs     | 16 ++++++++--------
 2 files changed, 38 insertions(+), 24 deletions(-)

(limited to 'tests')

diff --git a/tests/HomeTest.hs b/tests/HomeTest.hs
index 17c9e6d..fbe52ac 100644
--- a/tests/HomeTest.hs
+++ b/tests/HomeTest.hs
@@ -1,24 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
 module HomeTest
     ( homeSpecs
     ) where
 
-import Import
-import Yesod.Test
+import TestImport
+import qualified Data.List as L
 
-homeSpecs :: Specs
+homeSpecs :: Spec
 homeSpecs =
-  describe "These are some example tests" $
-    it "loads the index and checks it looks right" $ do
-      get_ "/"
-      statusIs 200
-      htmlAllContain "h1" "Hello"
+    ydescribe "These are some example tests" $ do
 
-      post "/" $ do
-        addNonce
-        fileByLabel "Choose a file" "tests/main.hs" "text/plain" -- talk about self-reference
-        byLabel "What's on the file?" "Some Content"
+        yit "loads the index and checks it looks right" $ do
+            get HomeR
+            statusIs 200
+            htmlAllContain "h1" "Hello"
 
-      statusIs 200
-      htmlCount ".message" 1
-      htmlAllContain ".message" "Some Content"
-      htmlAllContain ".message" "text/plain"
+            request $ do
+                setMethod "POST"
+                setUrl HomeR
+                addNonce
+                fileByLabel "Choose a file" "tests/main.hs" "text/plain" -- talk about self-reference
+                byLabel "What's on the file?" "Some Content"
+
+            statusIs 200
+            printBody
+            htmlCount ".message" 1
+            htmlAllContain ".message" "Some Content"
+            htmlAllContain ".message" "text/plain"
+
+        -- This is a simple example of using a database access in a test.  The
+        -- test will succeed for a fresh scaffolded site with an empty database,
+        -- but will fail on an existing database with a non-empty user table.
+        yit "leaves the user table empty" $ do
+            get HomeR
+            statusIs 200
+            users <- runDB $ selectList ([] :: [Filter User]) []
+            assertEqual "user table empty" 0 $ L.length users
diff --git a/tests/main.hs b/tests/main.hs
index d475fe8..672220d 100644
--- a/tests/main.hs
+++ b/tests/main.hs
@@ -5,18 +5,18 @@
 module Main where
 
 import Import
-import Settings
-import Yesod.Logger (defaultDevelopmentLogger)
 import Yesod.Default.Config
 import Yesod.Test
 import Application (makeFoundation)
 
 import HomeTest
 
-main :: IO a
+main :: IO ()
 main = do
-    conf <- loadConfig $ (configSettings Testing) { csParseExtra = parseExtra }
-    logger <- defaultDevelopmentLogger
-    foundation <- makeFoundation conf logger
-    app <- toWaiAppPlain foundation
-    runTests app (connPool foundation) homeSpecs
+    conf <- Yesod.Default.Config.loadConfig $ (configSettings Testing)
+                { csParseExtra = parseExtra
+                }
+    foundation <- makeFoundation conf
+    hspec $ do
+        yesodSpec foundation $ do
+            homeSpecs
-- 
cgit v1.2.3