language-puppet-1.4.3: tests/Interpreter/EvaluateStatementSpec.hs
{-# LANGUAGE OverloadedLists #-}
module Interpreter.EvaluateStatementSpec where
import Helpers
import qualified Data.Text as Text
main :: IO ()
main = hspec spec
shouldNotify :: [Text] -> PValue -> Expectation
shouldNotify s expected = do
catalog <- case pureCatalog (Text.unlines s) of
Left rr -> fail rr
Right (x,_) -> pure x
let msg = catalog ^? at (RIdentifier "notify" "test")._Just.rattributes. ix "message"
msg `shouldBe` (Just expected)
spec :: Spec
spec = do
describe "evaluate statement" $ do
it "should evaluate simple variable assignment" $
[ "$a = 0" , "notify { 'test': message => \"a is ${a}\"}"] `shouldNotify` "a is 0"
it "should evaluate chained variables assignment" $
[ "$a = $b = 0" , "notify { 'test': message => \"b is ${b}\"}"] `shouldNotify` "b is 0"