headroom-0.3.0.0: test/Headroom/Command/ReadersSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Headroom.Command.ReadersSpec
( spec
)
where
import Headroom.Command.Readers
import Headroom.Configuration.Types ( LicenseType )
import Headroom.Data.EnumExtra ( EnumExtra(..) )
import Headroom.FileType.Types ( FileType )
import RIO
import qualified RIO.Text as T
import Test.Hspec
import Test.Hspec.QuickCheck ( prop )
import Test.QuickCheck
spec :: Spec
spec = do
describe "parseLicenseAndFileType" $ do
prop "should parse license and file type from raw input"
prop_parseLicenseAndFileType
where
licenseTypes = fmap (T.toLower . enumToText) (allValues @LicenseType)
fileTypes = fmap (T.toLower . enumToText) (allValues @FileType)
licenseAndFileTypesGen = elements
$ concatMap (\lt -> fmap (\ft -> lt <> ":" <> ft) fileTypes) licenseTypes
prop_parseLicenseAndFileType =
forAll licenseAndFileTypesGen (isJust . parseLicenseAndFileType)