packages feed

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

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}

module API.CommitsTests (commitsTests) where

import API.Common
import Data.Aeson
import qualified Data.ByteString.Lazy.Char8 as BSL
import GitLab
import Test.Tasty

-- | https://docs.gitlab.com/ee/api/commits.html
commitsTests :: [TestTree]
commitsTests =
  concat
    [ let fname = "data/api/commits/list-repository-commits.json"
       in gitlabJsonParserTests
            "list-repository-commits"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Commit])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Commit]
                parseOne (encode decodedFile) :: IO [Commit]
            ),
      let fname = "data/api/commits/create-commit-multiple-files-commits.json"
       in gitlabJsonParserTests
            "create-commit-multiple-files-commits"
            fname
            (parseOne =<< BSL.readFile fname :: IO Commit)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Commit
                parseOne (encode decodedFile) :: IO Commit
            ),
      let fname = "data/api/commits/cherry-pick-commit.json"
       in gitlabJsonParserTests
            "cherry-pick-commit"
            fname
            (parseOne =<< BSL.readFile fname :: IO Commit)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Commit
                parseOne (encode decodedFile) :: IO Commit
            ),
      let fname = "data/api/commits/revert-commit.json"
       in gitlabJsonParserTests
            "revert-commit"
            fname
            (parseOne =<< BSL.readFile fname :: IO Commit)
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO Commit
                parseOne (encode decodedFile) :: IO Commit
            ),
      let fname = "data/api/commits/get-diff-of-commit.json"
       in gitlabJsonParserTests
            "get-diff-of-commit"
            fname
            (parseOne =<< BSL.readFile fname :: IO [Diff])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [Diff]
                parseOne (encode decodedFile) :: IO [Diff]
            ),
      let fname = "data/api/commits/get-comments-of-commit.json"
       in gitlabJsonParserTests
            "get-comments-of-commit"
            fname
            (parseOne =<< BSL.readFile fname :: IO [CommitNote])
            ( do
                decodedFile <- parseOne =<< BSL.readFile fname :: IO [CommitNote]
                parseOne (encode decodedFile) :: IO [CommitNote]
            )
    ]