packages feed

composite-swagger-0.5.4.0: test/THSpec.hs

module THSpec where

import Composite
import Composite.Aeson.TH (makeRecordJsonWrapper)
import Composite.Swagger.TH (makeToSchema)
import Composite.TH (withLensesAndProxies)
import Control.Lens.TH (makeWrapped)
import Data.Swagger (validateToJSON)
import Test.Hspec (Spec, describe, it, shouldBe)

withLensesAndProxies [d|
  type FFoo = "foo" :-> Int
  type FBar = "bar" :-> String
  |]
type TestRec = '["foo" :-> Int, "bar" :-> String]

makeRecordJsonWrapper "TestRecJson" ''TestRec
makeWrapped ''TestRecJson
makeToSchema "TestRecJson" ''TestRecJson

thSuite :: Spec
thSuite = do
  describe "Swagger Record Support" $ do
    it "encodes all fields" $ do
      let x = TestRecJson $ 1 :*: "a" :*: RNil
      validateToJSON x `shouldBe` mempty