packages feed

zuul-0.1.0.0: test/Spec.hs

module Main (main) where

import Data.Aeson (decode)
import qualified Data.ByteString.Lazy as BSL
import Data.Maybe (isJust)
import Test.Tasty
import Test.Tasty.HUnit
import Zuul

main :: IO ()
main = defaultMain (testGroup "Tests" [encodingTests])

encodingTests :: TestTree
encodingTests =
  testGroup
    "FromJSON"
    [ decodeFp "Status.json" isStatus,
      decodeFp "Tenants.json" isTenants,
      decodeFp "Projects.json" isProjects,
      decodeFp "Project.json" isProjectConfig,
      decodeFp "Jobs.json" isJobs,
      decodeFp "Job.json" isJobConfigs
    ]
  where
    decodeFp fp check = testCase ("Test " <> fp) $ do
      fContent <- BSL.readFile ("./test/data/" <> fp)
      assertBool (fp <> " is decoded") (check (decode fContent))
    isProjectConfig :: Maybe Zuul.ProjectConfig -> Bool
    isProjectConfig = isJust
    isJobConfigs :: Maybe [Zuul.JobConfig] -> Bool
    isJobConfigs = isJust
    isJobs :: Maybe [Zuul.Job] -> Bool
    isJobs = isJust
    isProjects :: Maybe [Zuul.Project] -> Bool
    isProjects = isJust
    isTenants :: Maybe [Zuul.Tenant] -> Bool
    isTenants = isJust
    isStatus :: Maybe Zuul.Status -> Bool
    isStatus = isJust