buffet-0.2.0: test/Buffet/Toolbox/TestHelp.hs
{- HLINT ignore "Avoid restricted extensions" -}
{-# LANGUAGE DeriveGeneric #-}
module Buffet.Toolbox.TestHelp
( get
) where
import qualified Data.Text as T
import qualified Data.Text.Encoding as Encoding
import qualified Data.Yaml as Yaml
import qualified GHC.Generics as Generics
import Prelude (Eq, IO, Maybe(Just, Nothing), Ord, Show, ($), (.), fmap)
import qualified Test.Tasty.HUnit as HUnit
newtype Package =
Package
{ synopsis :: T.Text
}
deriving (Eq, Generics.Generic, Ord, Show)
instance Yaml.FromJSON Package
get :: T.Text -> T.Text -> HUnit.Assertion
get package commandOutput = do
expectedSynopsis <- getPackageSynopsis package
HUnit.assertEqual "" (Just expectedSynopsis) actualSynopsis
where
actualSynopsis =
case T.lines commandOutput of
_:secondLine:_ -> Just $ T.stripStart secondLine
_ -> Nothing
getPackageSynopsis :: T.Text -> IO T.Text
getPackageSynopsis = fmap synopsis . Yaml.decodeThrow . Encoding.encodeUtf8