unused-0.9.0.0: test/Unused/ProjectionSpec.hs
module Unused.ProjectionSpec where
import Data.Text (Text)
import Test.Hspec
import Unused.Projection
main :: IO ()
main = hspec spec
spec :: Spec
spec =
parallel $
describe "translate" $ do
it "replaces the text without transforms" $ translate' "foo_{}" "bar" `shouldBe` "foo_bar"
it "handles text transformations" $ do
translate' "{camelcase}Validator" "proper_email" `shouldBe` "ProperEmailValidator"
translate' "{snakecase}" "ProperEmail" `shouldBe` "proper_email"
translate' "{camelcase}Validator" "AlreadyCamelcase" `shouldBe`
"AlreadyCamelcaseValidator"
it "handles unknown transformations" $
translate' "{unknown}Validator" "proper_email" `shouldBe` "proper_email"
translate' :: Text -> Text -> Text
translate' template v =
case translate template of
Right f -> f v
Left _ -> v