1414
1515
1616module ExMessages (
17- messages
17+ specMessages
1818 ) where
1919
20- import Test.HUnit
20+ import Common (bindOptions , include )
21+ import Database.PostgreSQL.Simple (Connection )
2122import Database.PostgreSQL.Simple.Bind (bindFunction )
2223import Database.PostgreSQL.Simple.Bind.Types ()
23- import Database.PostgreSQL.Simple (Connection )
2424import Prelude hiding (getContents )
25- import Common ( bindOptions , TestEnv , mkTest , include )
25+ import Test.Hspec ( Spec , describe , it , shouldBe )
2626
2727concat <$> mapM (bindFunction bindOptions) [
2828 " function send_message(p_receiver varchar, p_contents varchar) returns bigint"
@@ -31,35 +31,28 @@ concat <$> mapM (bindFunction bindOptions) [
3131 ]
3232
3333
34- runTests :: Int -> Connection -> IO ()
35- runTests n conn = do
36- let getId (x, _, _) = x
37-
38- msg1 <- sqlSendMessage conn " mr_foo" " hello!"
39- msg2 <- sqlSendMessage conn " mr_bar" " hello!"
40- msg3 <- sqlSendMessage conn " mr_bar" " hello again!"
41-
42- sqlGetNewMessages conn " mr_foo" >>= \ xs ->
43- assertEqual (" check get_new_messages " ++ (show n) ++ " .1" ) [msg1] (map getId xs)
34+ specMessages :: Connection -> Spec
35+ specMessages conn = describe " Messages example" $ it " works" $ mapM_ runTests [
36+ " ./examples/sql/messages.sql"
37+ , " ./examples/sql/messages-patch-1.sql"
38+ , " ./examples/sql/messages-patch-2.sql"
39+ ] where
4440
45- sqlGetNewMessages conn " mr_bar" >>= \ xs ->
46- assertEqual (" check get_new_messages " ++ (show n) ++ " .2" ) [msg2, msg3] (map getId xs)
41+ getId (x, _, _) = x
4742
48- sqlMarkAsRead conn " mr_bar" msg2
43+ runTests fn = do
44+ include conn fn
4945
50- sqlGetNewMessages conn " mr_bar" >>= \ xs ->
51- assertEqual (" check get_new_messages " ++ (show n) ++ " .3" ) [msg3] (map getId xs)
46+ msg1 <- sqlSendMessage conn " mr_foo" " hello!"
47+ msg2 <- sqlSendMessage conn " mr_bar" " hello!"
48+ msg3 <- sqlSendMessage conn " mr_bar" " hello again!"
5249
53- sqlMarkAsRead conn " mr_foo" msg1
54- sqlMarkAsRead conn " mr_bar" msg3
50+ sqlGetNewMessages conn " mr_foo" >>= shouldBe [ msg1] . map getId
51+ sqlGetNewMessages conn " mr_bar" >>= shouldBe [msg2, msg3] . map getId
5552
53+ sqlMarkAsRead conn " mr_bar" msg2
5654
57- messages :: TestEnv -> Test
58- messages = mkTest (flip include " ./examples/sql/messages.sql" )
59- (\ conn -> do
60- runTests 1 conn
61- include conn " ./examples/sql/messages-patch-1.sql"
62- runTests 2 conn
63- include conn " ./examples/sql/messages-patch-2.sql"
64- runTests 3 conn)
55+ sqlGetNewMessages conn " mr_bar" >>= shouldBe [msg3] . map getId
6556
57+ sqlMarkAsRead conn " mr_foo" msg1
58+ sqlMarkAsRead conn " mr_bar" msg3
0 commit comments