graphql/tests/tasty.hs
2016-02-12 13:27:46 +01:00

34 lines
932 B
Haskell

{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
#if !MIN_VERSION_base(4,8,0)
import Control.Applicative ((<$>), (<*>))
#endif
import Data.Attoparsec.Text (parseOnly)
import qualified Data.Text.IO as Text
import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit
import qualified Data.GraphQL.Parser as Parser
import qualified Data.GraphQL.Encoder as Encoder
import qualified Test.StarWars.QueryTests as SW
import Paths_graphql (getDataFileName)
main :: IO ()
main = defaultMain . testGroup "Tests" . (: [SW.test]) =<< ksTest
ksTest :: IO TestTree
ksTest = testCase "Kitchen Sink"
<$> (assertEqual "Encode" <$> expected <*> actual)
where
expected = Text.readFile
=<< getDataFileName "tests/data/kitchen-sink.min.graphql"
actual = either (error "Parsing error!") Encoder.document
. parseOnly Parser.document
<$> expected