Implement FromField Bool

This commit is contained in:
2023-09-05 17:23:25 +02:00
parent 66202b1e34
commit 60f7f1c091
4 changed files with 39 additions and 2 deletions
@@ -42,6 +42,12 @@ newtype ADouble = ADouble
instance FromRow ADouble where
newtype ABool = ABool
{ bool :: Bool
} deriving (Eq, Generic, Show)
instance FromRow ABool where
shouldFetch :: (Eq a, FromRow a, Show a) => Connection -> ByteString -> [a] -> IO ()
shouldFetch conn query expectedRows = do
actualRows <- Opium.fetch_ conn query
@@ -125,3 +131,16 @@ spec = do
Right [ADouble value1] <- Opium.fetch_ conn "SELECT '-inf'::double precision AS double"
value1 `shouldSatisfy` (isInfinite /\ (< 0))
describe "FromField Bool" $ do
it "Decodes boolean" $ \conn -> do
shouldFetch conn "SELECT true AS bool" [ABool True]
shouldFetch conn "SELECT 't'::boolean AS bool" [ABool True]
shouldFetch conn "SELECT 'yes'::boolean AS bool" [ABool True]
shouldFetch conn "SELECT 'on'::boolean AS bool" [ABool True]
shouldFetch conn "SELECT 1::boolean AS bool" [ABool True]
shouldFetch conn "SELECT false AS bool" [ABool False]
shouldFetch conn "SELECT 'f'::boolean AS bool" [ABool False]
shouldFetch conn "SELECT 'no'::boolean AS bool" [ABool False]
shouldFetch conn "SELECT 'off'::boolean AS bool" [ABool False]
shouldFetch conn "SELECT 0::boolean AS bool" [ABool False]