pg-store-0.0.1: tests/Database/PostgreSQL/Store/QuerySpec.hs
{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes #-}
module Database.PostgreSQL.Store.QuerySpec (querySpec) where
import Test.Hspec
import Data.String
import Data.Typeable
import Database.PostgreSQL.Store
import Database.PostgreSQL.Store.Query
import Database.PostgreSQL.Store.Columns
data MyType = MyConstructor Int
deriving (Show)
instance DescribableTable MyType where
describeTableName _ = "InsertTableName"
describeTableIdentifier _ = "InsertTableIdentifier"
testValue :: Int
testValue = 1337
querySpec :: Spec
querySpec =
describe "parseStoreQueryE" $ do
it "must resolve tables names correctly" $
queryStatement [pgsq|MyType|]
`shouldBe` fromString ("\"" ++ describeTableName (Proxy :: Proxy MyType) ++ "\"")
it "must resolve identifier column names correctly" $
queryStatement [pgsq|&MyType|]
`shouldBe` fromString ("\"" ++ describeTableIdentifier (Proxy :: Proxy MyType) ++ "\"")
it "must insert and pack variables correctly" $
[pgsq|$testValue|] `shouldBe` Query "$1" [pack testValue]