headroom-0.1.0.0: test/Headroom/Types/UtilsSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Headroom.Types.UtilsSpec
( spec
)
where
import Headroom.FileType ( FileType(..) )
import Headroom.Types.Utils
import RIO
import RIO.List ( sort )
import Test.Hspec
spec :: Spec
spec = do
describe "allValues" $ do
it "should list all values of FileType enum" $ do
let actual = allValues :: [FileType]
expected = [CSS, Haskell, HTML, Java, JS, Scala]
sort actual `shouldBe` sort expected
describe "dropFieldPrefix" $ do
it "removes prefix and lowercases first letter for 'prSomeField'" $ do
dropFieldPrefix "prSomeField" `shouldBe` "someField"
it "removes prefix and keeps case for 'prURLField'" $ do
dropFieldPrefix "prURLField" `shouldBe` "URLField"
describe "readEnumCI" $ do
it "reads enum value from string representation (case insensitive)" $ do
let expected = [(Haskell, "")]
readEnumCI "haskell" `shouldBe` expected
readEnumCI "Haskell" `shouldBe` expected
readEnumCI "HASKELL" `shouldBe` expected
describe "symbolCase" $ do
it "replaces camel cased string into symbol cased" $ do
let input = "camelCasedValue"
expected = "camel-cased-value"
symbolCase '-' input `shouldBe` expected