packages feed

xstatic-th-0.1.1: test/Test.hs

{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

module Main (main) where

import Codec.Compression.GZip qualified as GZip
import Control.Monad (unless)
import Data.ByteString qualified as BS
import Test.Tasty
import Test.Tasty.HUnit

import Paths_xstatic_th (version)
import XStatic
import XStatic.TH

main :: IO ()
main = defaultMain $ do
    testGroup
        "xstatic-th"
        [ testCase "Test embedXStaticFileVersion" $ do
            let xf :: XStaticFile
                xf = $(embedXStaticFileVersion "./xstatic-th.cabal" version)

            xfPath xf @?= "/xstatic-th.cabal"
            isGzip (xfContent xf) @? "Uncompressed file"
            xfType xf @?= "application/octet-stream"
        , testCase "Test embedXStaticFile" $ do
            let xf :: XStaticFile
                xf = $(embedXStaticFile "./data/test.js")
            xfPath xf @?= "/test.js"
            xfETag xf @?= "724ba28f4a9a1b472057ff99511ed393a45552e1"
            unless (xfType xf `elem` ["application/javascript", "text/javascript"]) $ do
                error $ "Bad mime type: " <> show (xfType xf)
            xfContent xf @?= BS.toStrict (GZip.compress "true\n")
        ]