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