import Test.Hspec import System.Exit (exitFailure) import Control.Concurrent import Control.Concurrent.Thread.Delay (delay) import Control.Monad.Reader import Villefort.Config import Villefort.Definitions import Villefort.Database import Villefort.Server import Villefort.Todo import Database.HDBC.Sqlite3 import Database.HDBC hiding (run) import Test.QuickCheck.Monadic import Test.QuickCheck import Test.WebDriver main :: IO () main = do hspec $ do describe "database" $ do it "does proper inserts" $ do quickCheckWith args prop_insert insertTest title des due sub= do recreate runReaderT (addTask des title due sub) test runReaderT qetTasks' test args = stdArgs { maxSuccess = 1000 } prop_insert titl des du su= monadicIO $ do row <- run $ insertTest titl des du su assert ((row !! 0) == Row { rid=2, title=titl, description=des, due=du, subject=su, time = 0}) test = def { database = "test/test.db" } recreate :: IO () recreate = do runReaderT (execQuery "delete from todo" "") test runReaderT (execQuery "insert into todo (id) Values (1)" "") test