graphql-engine/server/src-test/Hasura/Backends/DataConnector/API/V0/ColumnSpec.hs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
1.6 KiB
Haskell
Raw Normal View History

{-# 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.ScalarSpec (genScalarType)
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
<*> genScalarType
<*> Gen.bool
<*> Gen.maybe (genArbitraryAlphaNumText defaultRange)