{-# LANGUAGE OverloadedStrings #-} module JavascriptSpec where import Data.List import Data.String import Data.String.Conversions import Test.Hspec import Test.Hspec.Wai import Javascript spec :: Spec spec = do describe "apiJS" $ do it "is contained verbatim in Javascript.lhs" $ do code <- readFile "Javascript.lhs" cs apiJS1 `shouldSatisfy` (`isInfixOf` code) cs apiJS3 `shouldSatisfy` (`isInfixOf` code) cs apiJS4 `shouldSatisfy` (`isInfixOf` code) cs apiJS6 `shouldSatisfy` (`isInfixOf` code) describe "writeJSFiles" $ do it "[not a test] write apiJS to static/api.js" $ do writeJSFiles describe "app" $ with (return app) $ do context "/api.js" $ do it "delivers apiJS" $ do get "/api.js" `shouldRespondWith` (fromString (cs apiJS1)) context "/" $ do it "delivers something" $ do get "" `shouldRespondWith` 200 get "/" `shouldRespondWith` 200