packages feed

shakespeare-2.1.7: test/Text/Shakespeare/I18NSpec.hs

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE TemplateHaskell       #-}
{-# LANGUAGE TypeFamilies          #-}

module Text.Shakespeare.I18NSpec
    ( spec
    ) where

import           Data.Text             (Text)
import           Text.Shakespeare.I18N
import           Test.Hspec

class YesodSubApp master where

instance YesodSubApp ()

newtype SubApp master = SubApp master

instance YesodSubApp (SubApp master)

data Test a b

mkMessage "(YesodSubApp master) => SubApp master" "other-messages" "en" 

mkMessage "Test a b" "test-messages" "en"

newtype SubAppNoRec master = SubAppNoRec master

instance YesodSubApp (SubAppNoRec master)

data TestNoRec

mkMessageOpts
  (setConPrefix "MsgNR" $ setUseRecordCons False defMakeMessageOpts)
  "(YesodSubApp master) => SubAppNoRec master"
  "(YesodSubApp master) => SubAppNoRec master"
  "other-messages"
  "en"

mkMessageOpts
  (setConPrefix "MsgNR" $ setUseRecordCons False defMakeMessageOpts)
  "TestNoRec"
  "TestNoRec"
  "test-messages"
  "en"

spec :: Spec
spec = do
  describe "I18N" $ do
    it "should generate messages with record constructors" $ do
      let msg = MsgEntryCreatedRR { subAppMessageTitle = "foo" }
      renderMessage (SubApp ()) [] msg `shouldBe` "Your new blog post, foo, has been created"

    it "should generate messages without record constructors" $ do
      let msg = MsgNREntryCreatedRR "bar"
      renderMessage (SubAppNoRec ()) [] msg `shouldBe` "Your new blog post, bar, has been created"