packages feed

aws-arn-0.3.3.0: test/Network/AWS/ARN/StatesTest.hs

{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}

module Network.AWS.ARN.StatesTest where

import Data.Text (Text)
import Lens.Micro.Pro (Lens', set, (^?))
import Network.AWS.ARN.States
import Test.Tasty
import Test.Tasty.HUnit

test_all :: TestTree
test_all =
  testGroup
    "Network.AWS.ARN.StateMachine"
    [ testGroup
        "StateMachine"
        [ testGroup
            "parsing"
            [ testCase "unqualified state machine name" $
                "stateMachine:workflow" ^? _StateMachine @?= Just (StateMachine "workflow" Nothing),
              testCase "qualified state machine name" $
                "stateMachine:workflow:42" ^? _StateMachine @?= Just (StateMachine "workflow" $ Just "42")
            ],
          testGroup
            "updating"
            [ testCase "setting name" $
                set (_StateMachine . smName) "newWorkflow" "stateMachine:workflow"
                  @?= "stateMachine:newWorkflow",
              testCase "setting qualifier" $
                set (_StateMachine . smQualifier) (Just "v1") "stateMachine:workflow"
                  @?= "stateMachine:workflow:v1",
              testCase "unsetting qualifier" $
                set (_StateMachine . smQualifier) Nothing "stateMachine:workflow:v1"
                  @?= "stateMachine:workflow"
            ]
        ]
    ]

smName :: Lens' StateMachine Text
smName l sm@StateMachine {name} = (\n -> sm {name = n}) <$> l name

smQualifier :: Lens' StateMachine (Maybe Text)
smQualifier l sm@StateMachine {qualifier} = (\q -> sm {qualifier = q}) <$> l qualifier