headroom-0.1.0.0: test/Headroom/HeaderSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Headroom.HeaderSpec
( spec
)
where
import Headroom.FileType ( FileType(..) )
import Headroom.Header
import RIO
import RIO.FilePath
import Test.Hspec
spec :: Spec
spec = do
let readTemplate p = readFileUtf8 $ "test-data/code-samples/haskell" </> p
describe "addHeader" $ do
it "adds header to source code if no header is present" $ do
let header = Header Haskell "-- This is header"
source <- readTemplate "stripped.hs"
expected <- readTemplate "replaced-simple.hs"
addHeader header source `shouldBe` expected
it "does nothing if some header is already present" $ do
let header = Header Haskell "-- This is header"
source <- readTemplate "full.hs"
addHeader header source `shouldBe` source
describe "containsHeader" $ do
it "detects whether source code header is present" $ do
withHeader <- readTemplate "full.hs"
withoutHeader <- readTemplate "stripped.hs"
containsHeader Haskell withHeader `shouldBe` True
containsHeader Haskell withoutHeader `shouldBe` False
describe "dropHeader" $ do
it "drops header from source code" $ do
source <- readTemplate "full.hs"
expected <- readTemplate "stripped.hs"
dropHeader Haskell source `shouldBe` expected
describe "headerSize" $ do
it "returns correct size of header for source code" $ do
source <- readTemplate "full.hs"
headerSize Haskell source `shouldBe` 15
describe "replaceHeader" $ do
it "replaces header in source code" $ do
let header = Header Haskell "-- This is header"
source <- readTemplate "full.hs"
expected <- readTemplate "replaced-simple.hs"
replaceHeader header source `shouldBe` expected