packages feed

aeson-typescript-0.5.0.0: test/GetDoc.hs

module GetDoc (tests) where

import Data.Aeson as A
import Data.Aeson.TypeScript.TH
import Data.Aeson.TypeScript.Types
import Data.Proxy
import Data.String.Interpolate
import Prelude hiding (Double)
import Test.Hspec


-- | OneField type doc
data OneField =
  -- | OneField constructor doc
  OneField {
    -- | This is a simple string
    simpleString :: String
    }
$(deriveTypeScript A.defaultOptions ''OneField)

tests :: SpecWith ()
tests = describe "getDoc tests" $ do
  it [i|Works with a simple record type|] $ do
    (getTypeScriptDeclarations (Proxy :: Proxy OneField)) `shouldBe` ([
      TSTypeAlternatives "OneField" [] ["IOneField"] (Just "OneField type doc")
      , TSInterfaceDeclaration "IOneField" [] [
          TSField False "simpleString" "string" (Just "This is a simple string")
          ] (Just "OneField constructor doc")
      ])

main :: IO ()
main = hspec tests