@@ -23,6 +23,8 @@ import Data.Aeson
23import Data.ByteString (ByteString)
23import Data.ByteString (ByteString)
24import qualified Data.ByteString as B
24import qualified Data.ByteString as B
25import qualified Data.ByteString.Lazy.Char8 as BL
25import qualified Data.ByteString.Lazy.Char8 as BL
26+import Data.CaseInsensitive (CI)
27+import qualified Data.CaseInsensitive as CI
26import Data.Map (Map)
28import Data.Map (Map)
27import qualified Data.Map as Map
29import qualified Data.Map as Map
28import Data.Text(Text)
30import Data.Text(Text)
@@ -50,6 +52,7 @@ tests env = testGroup "tests"
50 , testCase "Array" . testArray
52 , testCase "Array" . testArray
51 , testCase "Array of nullables" . testNullableArray
53 , testCase "Array of nullables" . testNullableArray
52 , testCase "HStore" . testHStore
54 , testCase "HStore" . testHStore
55+ , testCase "citext" . testCIText
53 , testCase "JSON" . testJSON
56 , testCase "JSON" . testJSON
54 , testCase "Savepoint" . testSavepoint
57 , testCase "Savepoint" . testSavepoint
55 , testCase "Unicode" . testUnicode
58 , testCase "Unicode" . testUnicode
@@ -203,6 +206,19 @@ testHStore TestEnv{..} = do
203 m' <- query conn "SELECT ?::hstore" m
206 m' <- query conn "SELECT ?::hstore" m
204 [m] @?= m'
207 [m] @?= m'
209+testCIText :: TestEnv -> Assertion
210+testCIText TestEnv{..} = do
211+ execute_ conn "CREATE EXTENSION IF NOT EXISTS citext"
212+ roundTrip (CI.mk "")
213+ roundTrip (CI.mk "UPPERCASE")
214+ roundTrip (CI.mk "lowercase")
216+ roundTrip :: (CI Text) -> Assertion
218+ let toPostgres = Only cit
219+ fromPostgres <- query conn "SELECT ?::citext" toPostgres
220+ [toPostgres] @?= fromPostgres
206testJSON :: TestEnv -> Assertion
222testJSON :: TestEnv -> Assertion
207testJSON TestEnv{..} = do
223testJSON TestEnv{..} = do
208 roundTrip (Map.fromList [] :: Map Text Text)
224 roundTrip (Map.fromList [] :: Map Text Text)