packages feed

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

{-# LANGUAGE FlexibleInstances #-}

module API.IssuesTests (issuesTests) 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/issues.html
issuesTests :: [TestTree]
issuesTests =
  concat
    [ let fname = "data/api/issues/list-project-issues.json"
       in gitlabJsonParserTests
            "list-project-issues"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Issue])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Issue]
                parseOne (encode decodedFile) :: IO [Issue]
            ),
      let fname = "data/api/issues/add-time-spent-for-issue.json"
       in gitlabJsonParserTests
            "add-time-spent-for-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO TimeStats)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO TimeStats
                parseOne (encode decodedFile) :: IO TimeStats
            ),
      let fname = "data/api/issues/reset-time-spent-for-issue.json"
       in gitlabJsonParserTests
            "reset-time-spent-for-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO TimeStats)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO TimeStats
                parseOne (encode decodedFile) :: IO TimeStats
            ),
      let fname = "data/api/issues/clone-issue.json"
       in gitlabJsonParserTests
            "clone-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/merge-requests-close-issue-on-merge.json"
       in gitlabJsonParserTests
            "merge-requests-close-issue-on-merge"
            fname
            (parseOne =<< BSL.readFile fname :: IO [MergeRequest])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [MergeRequest]
                parseOne (encode decodedFile) :: IO [MergeRequest]
            ),
      let fname = "data/api/issues/set-time-estimate-for-issue.json"
       in gitlabJsonParserTests
            "set-time-estimate-for-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO TimeEstimate)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO TimeEstimate
                parseOne (encode decodedFile) :: IO TimeEstimate
            ),
      let fname = "data/api/issues/reset-time-estimate-for-issue.json"
       in gitlabJsonParserTests
            "reset-time-estimate-for-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO TimeEstimate)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO TimeEstimate
                parseOne (encode decodedFile) :: IO TimeEstimate
            ),
      let fname = "data/api/issues/create-todo-item.json"
       in gitlabJsonParserTests
            "create-todo-item"
            fname
            (parseOne =<< BSL.readFile fname :: IO Todo)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Todo
                parseOne (encode decodedFile) :: IO Todo
            ),
      let fname = "data/api/issues/merge-requests-related-to-issue.json"
       in gitlabJsonParserTests
            "merge-requests-related-to-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO [MergeRequest])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [MergeRequest]
                parseOne (encode decodedFile) :: IO [MergeRequest]
            ),
      let fname = "data/api/issues/single-issue.json"
       in gitlabJsonParserTests
            "single-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/edit-issue.json"
       in gitlabJsonParserTests
            "edit-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/move-issue.json"
       in gitlabJsonParserTests
            "move-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/single-project-issue.json"
       in gitlabJsonParserTests
            "single-project-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/new-issue.json"
       in gitlabJsonParserTests
            "new-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/subscribe-to-issue.json"
       in gitlabJsonParserTests
            "subscribe-to-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/list-group-issues.json"
       in gitlabJsonParserTests
            "list-group-issues"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Issue])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Issue]
                parseOne (encode decodedFile) :: IO [Issue]
            ),
      let fname = "data/api/issues/participants-on-issues.json"
       in gitlabJsonParserTests
            "participants-on-issues"
            fname
            (parseOne =<< BSL.readFile fname :: IO [User])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [User]
                parseOne (encode decodedFile) :: IO [User]
            ),
      let fname = "data/api/issues/unsubscribe-from-issue.json"
       in gitlabJsonParserTests
            "unsubscribe-from-issue"
            fname
            (parseOne =<< BSL.readFile fname :: IO Issue)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Issue
                parseOne (encode decodedFile) :: IO Issue
            ),
      let fname = "data/api/issues/list-issues.json"
       in gitlabJsonParserTests
            "list-issues"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Issue])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Issue]
                parseOne (encode decodedFile) :: IO [Issue]
            ),
      let fname = "data/api/issues/promote-issue-to-epic.json"
       in gitlabJsonParserTests
            "promote-issue-to-epic"
            fname
            (parseOne =<< BSL.readFile fname :: IO Note)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Note
                parseOne (encode decodedFile) :: IO Note
            ),
      let fname = "data/api/issues/get-time-tracking-stats.json"
       in gitlabJsonParserTests
            "get-time-tracking-stats"
            fname
            (parseOne =<< BSL.readFile fname :: IO TimeEstimate)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO TimeEstimate
                parseOne (encode decodedFile) :: IO TimeEstimate
            )
    ]

{-

upload-metric-image.json
list-metric-images.json
user-agent-details.json

-}