packages feed

dzen-dhall-1.0.0: test/DzenDhall/Test/Arguments.hs

module DzenDhall.Test.Arguments where

import DzenDhall.Arguments
import Options.Applicative
import Test.Tasty
import Test.Tasty.HUnit
import Test.Hspec
import Control.Category

getTests :: TestTree
getTests =
  testGroup "Arguments"
  [ testCase "#1" $ do
      runArgParser [ "--config-dir", ".", "--dzen-binary", "dzen", "init" ]
        `shouldBe`
        pure Arguments { _mbConfigDir = Just "."
                       , _mbDzenBinary = Just "dzen"
                       , _stdoutFlag = ToDzen
                       , _mbCommand = Just Init
                       , _explain = DontExplain
                       }

  , testCase "#2" $ do
      runArgParser [ "--explain", "plug", "foo" ]
        `shouldBe`
        pure Arguments { _mbConfigDir = Nothing
                       , _mbDzenBinary = Nothing
                       , _stdoutFlag = ToDzen
                       , _mbCommand = Just (Plug $ PlugCommand "foo" Confirm)
                       , _explain = Explain
                       }

  , testCase "#3" $ do
      runArgParser [ "--explain", "plug", "--yes", "foo" ]
        `shouldBe`
        pure Arguments { _mbConfigDir = Nothing
                       , _mbDzenBinary = Nothing
                       , _stdoutFlag = ToDzen
                       , _mbCommand = Just (Plug $ PlugCommand "foo" DontConfirm)
                       , _explain = Explain
                       }
  ]

runArgParser :: [String] -> Maybe Arguments
runArgParser =
  execParserPure defaultPrefs argumentsParser >>>
  \case
    Options.Applicative.Success r -> Just r
    _                             -> Nothing