Skip to content

Commit

Permalink
Add test case for param ref
Browse files Browse the repository at this point in the history
  • Loading branch information
ysangkok committed Apr 11, 2024
1 parent d258008 commit 94fa13d
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module TestCases.Operations.TestCases.ParamRef
( operation
, route
, HeaderParams(..)
, headerParamsSchema
, Responses(..)
, responseSchemas
) where

import Beeline.HTTP.Client ((?+))
import qualified Beeline.HTTP.Client as H
import Beeline.Routing ((/-))
import qualified Beeline.Routing as R
import Prelude (($), Eq, Show, fmap)
import qualified TestCases.Operations.TestCases.ParamRef.XSampleHeaderParam as XSampleHeaderParam

operation ::
H.Operation
H.ContentTypeDecodingError
H.NoPathParams
H.NoQueryParams
HeaderParams
H.NoRequestBody
Responses
operation =
H.defaultOperation
{ H.requestRoute = route
, H.requestHeaderSchema = headerParamsSchema
, H.responseSchemas = responseSchemas
}

route :: R.Router r => r H.NoPathParams
route =
R.get $
R.make H.NoPathParams
/- "test-cases"
/- "param-ref"

data HeaderParams = HeaderParams
{ xSampleHeaderParam :: XSampleHeaderParam.XSampleHeaderParam
}
deriving (Eq, Show)

headerParamsSchema :: H.ParameterCollectionSchema p => p HeaderParams HeaderParams
headerParamsSchema =
H.makeParams HeaderParams
?+ H.required xSampleHeaderParam XSampleHeaderParam.paramDef

data Responses
= Response204 H.NoResponseBody
deriving (Eq, Show)

responseSchemas :: [(H.StatusRange, H.ResponseBodySchema H.ContentTypeDecodingError Responses)]
responseSchemas =
[ (H.Status 204, fmap Response204 (H.noResponseBody))
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module TestCases.Operations.TestCases.ParamRef.XSampleHeaderParam
( XSampleHeaderParam(..)
, paramDef
) where

import qualified Beeline.Routing as R
import Prelude (Bool, Eq, Show)

newtype XSampleHeaderParam = XSampleHeaderParam Bool
deriving (Show, Eq)

paramDef :: R.ParameterDefinition XSampleHeaderParam
paramDef =
R.coerceParam (R.booleanParam "X-Sample-Header-Param")
2 changes: 2 additions & 0 deletions json-fleece-openapi3/examples/test-cases/test-cases.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ library
TestCases.Operations.TestCases.OperationTypeOptions.PathParam
TestCases.Operations.TestCases.OperationTypeOptions.PathParam.PathParam
TestCases.Operations.TestCases.OperationTypeOptions.PathParam.QueryParam
TestCases.Operations.TestCases.ParamRef
TestCases.Operations.TestCases.ParamRef.XSampleHeaderParam
TestCases.Operations.TestCases.QueryParams
TestCases.Operations.TestCases.QueryParams.BooleanParam
TestCases.Operations.TestCases.QueryParams.InlineEnumIntParam
Expand Down
14 changes: 14 additions & 0 deletions json-fleece-openapi3/examples/test-cases/test-cases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/FieldTestCases'
/test-cases/param-ref:
get:
parameters:
- $ref: '#/components/parameters/AParam'
responses:
'204':
description: Successfully got nothing
/test-cases/param-ref/{string-param}:
get:
operationId: ParamSchemaReference
Expand Down Expand Up @@ -453,6 +460,13 @@ paths:
schema:
$ref: '#/components/schemas/2_SchemaStartingWithNumber'
components:
parameters:
AParam:
in: header
name: X-Sample-Header-Param
schema:
type: boolean
required: true
schemas:
string-param:
type: string
Expand Down
2 changes: 2 additions & 0 deletions json-fleece-openapi3/json-fleece-openapi3.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -1914,6 +1914,8 @@ extra-source-files:
examples/test-cases/TestCases/Operations/TestCases/OperationTypeOptions/PathParam.hs
examples/test-cases/TestCases/Operations/TestCases/OperationTypeOptions/PathParam/PathParam.hs
examples/test-cases/TestCases/Operations/TestCases/OperationTypeOptions/PathParam/QueryParam.hs
examples/test-cases/TestCases/Operations/TestCases/ParamRef.hs
examples/test-cases/TestCases/Operations/TestCases/ParamRef/XSampleHeaderParam.hs
examples/test-cases/TestCases/Operations/TestCases/QueryParams.hs
examples/test-cases/TestCases/Operations/TestCases/QueryParams/BooleanParam.hs
examples/test-cases/TestCases/Operations/TestCases/QueryParams/InlineEnumIntParam.hs
Expand Down

0 comments on commit 94fa13d

Please sign in to comment.