{-# LANGUAGE OverloadedStrings #-} import Control.Monad.IO.Class (liftIO) import Database.Persist import Database.Persist.Sqlite import Test.Hspec import Zenith.DB import Zenith.DB ( EntityField(ZcashWalletId, ZcashWalletName) , ZcashWallet(zcashWalletName) ) main :: IO () main = do hspec $ do describe "Database tests" $ do it "Create table" $ do s <- runSqlite "test.db" $ do runMigration migrateAll s `shouldBe` () it "insert wallet record" $ do s <- runSqlite "test.db" $ do insert $ ZcashWallet "one two three four five six seven eight nine ten eleven twelve" "123456789" "987654321" 2000000 "Main Wallet" fromSqlKey s `shouldBe` 1 it "read wallet record" $ do s <- runSqlite "test.db" $ do selectList [ZcashWalletBirthdayHeight >. 0] [] length s `shouldBe` 1 it "modify wallet record" $ do s <- runSqlite "test.db" $ do let recId = toSqlKey 1 :: ZcashWalletId update recId [ZcashWalletName =. "New Wallet"] get recId "New Wallet" `shouldBe` maybe "None" zcashWalletName s it "delete wallet record" $ do s <- runSqlite "test.db" $ do let recId = toSqlKey 1 :: ZcashWalletId delete recId get recId "None" `shouldBe` maybe "None" zcashWalletName s