packages feed

servant-docs-simple-0.4.0.0: test/Test/Servant/Docs/Simple/Parse.hs

-- | Unit tests for generating documentation of api

module Test.Servant.Docs.Simple.Parse (parseSpec) where


import Servant.API (EmptyAPI)
import Servant.API.ContentTypes (JSON, PlainText)
import Test.Hspec (Spec, describe, it, shouldBe)

import Test.Servant.Docs.Simple.Samples (ApiComplete, ApiMultiple, apiCompleteParsed,
                                         apiMultipleParsed)

import Servant.Docs.Simple.Parse (parseApi, typeListText)
import Servant.Docs.Simple.Render (ApiDocs (..))


parseSpec :: Spec
parseSpec = describe "Servant.Docs.Simple.Parse" $ do
    describe "parseApi" $ do
        it "parses an EmptyAPI Details" $
            parseApi @EmptyAPI `shouldBe` ApiDocs []
        it "parses all Servant API Combinators" $
            parseApi @ApiComplete `shouldBe` apiCompleteParsed
        it "parses an API with multiple endpoints" $
            parseApi @ApiMultiple `shouldBe` apiMultipleParsed
    describe "typeListText" $ do
        it "works for '[()]" $ do
            typeListText @'[()] `shouldBe` "[()]"
        it "works for '[JSON,PlainText]" $
            typeListText @'[JSON,PlainText] `shouldBe` "[JSON,PlainText]"