graphql-engine/server/src-test/Hasura/Backends/DataConnector/API/V0/ColumnSpec.hs
David Overton f4419236ed Gdc capabilities scalar types - GDW-87
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5597
GitOrigin-RevId: 4f561bf476266955d7b1d3dbca4d406a97bf8b34
2022-09-06 04:26:03 +00:00

53 lines
1.6 KiB
Haskell

{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE QuasiQuotes #-}
module Hasura.Backends.DataConnector.API.V0.ColumnSpec (spec, genColumnName, genColumnInfo) where
import Data.Aeson.QQ.Simple (aesonQQ)
import Hasura.Backends.DataConnector.API.V0
import Hasura.Backends.DataConnector.API.V0.Scalar.TypeSpec (genType)
import Hasura.Generator.Common (defaultRange, genArbitraryAlphaNumText)
import Hasura.Prelude
import Hedgehog
import Hedgehog.Gen qualified as Gen
import Test.Aeson.Utils
import Test.Hspec
spec :: Spec
spec = do
describe "ColumnName" $ do
testToFromJSONToSchema (ColumnName "my_column_name") [aesonQQ|"my_column_name"|]
jsonOpenApiProperties genColumnName
describe "ColumnInfo" $ do
describe "without description" $
testToFromJSONToSchema
(ColumnInfo (ColumnName "my_column_name") StringTy False Nothing)
[aesonQQ|
{ "name": "my_column_name",
"type": "string",
"nullable": false
}
|]
describe "with description" $
testToFromJSONToSchema
(ColumnInfo (ColumnName "my_column_name") NumberTy True (Just "My column description"))
[aesonQQ|
{ "name": "my_column_name",
"type": "number",
"nullable": true,
"description": "My column description"
}
|]
jsonOpenApiProperties genColumnInfo
genColumnName :: MonadGen m => m ColumnName
genColumnName = ColumnName <$> genArbitraryAlphaNumText defaultRange
genColumnInfo :: MonadGen m => m ColumnInfo
genColumnInfo =
ColumnInfo
<$> genColumnName
<*> genType
<*> Gen.bool
<*> Gen.maybe (genArbitraryAlphaNumText defaultRange)