module Basic (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 data Unit1 = Unit1 $(deriveTypeScript A.defaultOptions ''Unit1) data Unit2 = Unit2 $(deriveTypeScript (A.defaultOptions { A.tagSingleConstructors = True , A.constructorTagModifier = const "foo" }) ''Unit2) tests :: SpecWith () tests = describe "Basic tests" $ do describe "tagSingleConstructors and constructorTagModifier" $ do it [i|Works with a normal unit|] $ do (getTypeScriptDeclarations (Proxy :: Proxy Unit1)) `shouldBe` ([ TSTypeAlternatives "Unit1" [] ["IUnit1"] Nothing , TSTypeAlternatives "IUnit1" [] ["void[]"] Nothing ]) it [i|Works with a unit with constructorTagModifier|] $ do (getTypeScriptDeclarations (Proxy :: Proxy Unit2)) `shouldBe` ([ TSTypeAlternatives "Unit2" [] ["\"foo\""] Nothing ]) main :: IO () main = hspec tests