servant/test/Servant/JQuerySpec.hs

40 lines
1.2 KiB
Haskell
Raw Normal View History

2015-01-02 10:46:21 +01:00
{-# LANGUAGE DataKinds #-}
2014-12-24 13:55:25 +01:00
{-# LANGUAGE QuasiQuotes #-}
2015-01-02 10:46:21 +01:00
{-# LANGUAGE TypeOperators #-}
2014-12-24 13:55:25 +01:00
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Servant.JQuerySpec where
import Data.Either (isRight)
import Data.Proxy
import Language.ECMAScript3.Parser (parseFromString)
import Test.Hspec
import Servant.API
import Servant.JQuery
type TestAPI = [sitemap|
POST /simple String -> Bool
GET /has.extension Bool
|]
2015-01-02 10:46:21 +01:00
type TopLevelRawAPI = "something" :> Get Int
:<|> Raw
2014-12-24 13:55:25 +01:00
spec :: Spec
spec = describe "Servant.JQuery"
generateJSSpec
generateJSSpec :: Spec
2015-01-02 10:46:21 +01:00
generateJSSpec = describe "generateJS" $ do
it "should generate valid javascript" $ do
let (postSimple :<|> getHasExtension ) = jquery (Proxy :: Proxy TestAPI)
2014-12-24 13:55:25 +01:00
parseFromString (generateJS postSimple) `shouldSatisfy` isRight
parseFromString (generateJS getHasExtension) `shouldSatisfy` isRight
2015-01-02 10:46:21 +01:00
print $ generateJS getHasExtension
it "should use non-empty function names" $ do
let (_ :<|> topLevel) = jquery (Proxy :: Proxy TopLevelRawAPI)
print $ generateJS $ topLevel "GET"
parseFromString (generateJS $ topLevel "GET") `shouldSatisfy` isRight
2014-12-24 13:55:25 +01:00