packages feed

gitlab-haskell-1.0.0.0: tests/API/JobsTests.hs

{-# LANGUAGE FlexibleInstances #-}

module API.JobsTests (jobsTests) where

import API.Common
import Control.Monad.IO.Class
import Data.Aeson
import qualified Data.ByteString.Lazy.Char8 as BSL
import GitLab
import GitLab.SystemHooks.GitLabSystemHooks
import GitLab.SystemHooks.Types
import Test.Tasty
import Test.Tasty.HUnit

-- | https://docs.gitlab.com/ee/api/jobs.html
jobsTests :: [TestTree]
jobsTests =
  concat
    [ let fname = "data/api/jobs/cancel-job.json"
       in gitlabJsonParserTests
            "cancel-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            ),
      let fname = "data/api/jobs/job-tokens-job.json"
       in gitlabJsonParserTests
            "job-tokens-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            ),
      let fname = "data/api/jobs/pipeline-jobs.json"
       in gitlabJsonParserTests
            "pipeline-jobs"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Job])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Job]
                parseOne (encode decodedFile) :: IO [Job]
            ),
      let fname = "data/api/jobs/project-jobs.json"
       in gitlabJsonParserTests
            "project-jobs"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Job])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Job]
                parseOne (encode decodedFile) :: IO [Job]
            ),
      let fname = "data/api/jobs/single-job.json"
       in gitlabJsonParserTests
            "single-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            ),
      let fname = "data/api/jobs/erase-job.json"
       in gitlabJsonParserTests
            "erase-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            ),
      let fname = "data/api/jobs/pipeline-bridges.json"
       in gitlabJsonParserTests
            "pipeline-bridges"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Job])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Job]
                parseOne (encode decodedFile) :: IO [Job]
            ),
      let fname = "data/api/jobs/play-job.json"
       in gitlabJsonParserTests
            "play-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            ),
      let fname = "data/api/jobs/retry-job.json"
       in gitlabJsonParserTests
            "retry-job"
            fname
            (parseOne =<< BSL.readFile fname :: IO Job)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Job
                parseOne (encode decodedFile) :: IO Job
            )
    ]