module Test.ReservedWords
( reservedWordsTests
)
where
import qualified Control.Monad.IO.Class as MIO
import qualified Data.String as String
import qualified Hedgehog as HH
import qualified Orville.PostgreSQL as Orville
import qualified Orville.PostgreSQL.Raw.Connection as Conn
import qualified Test.Entities.User as User
import qualified Test.Property as Property
import qualified Test.TestTable as TestTable
reservedWordsTests :: Orville.ConnectionPool -> Property.Group
reservedWordsTests pool =
Property.group "ReservedWords" $
[
( String.fromString "Can insert and select an entity with reserved words in its schema"
, Property.singletonProperty $ do
originalUser <- HH.forAll User.generate
usersFromDB <-
MIO.liftIO $ do
Conn.withPoolConnection pool $ \connection ->
TestTable.dropAndRecreateTableDef connection User.table
Orville.runOrville pool $ do
_ <- Orville.insertEntity User.table originalUser
Orville.findEntitiesBy User.table mempty
usersFromDB HH.=== [originalUser]
)
]