gitlab-api-0.0.0.1: test/Spec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
import qualified RIO.Text as Text
import RIO
import Gitlab
import System.Environment
import Test.Hspec
data GitlabTestApp = GitlabTestApp {
gitlabConfig :: GitlabConfig
, logFunc :: LogFunc
}
instance HasGitlabConfig GitlabTestApp where
gitlabConfigL = lens gitlabConfig (\x y -> x { gitlabConfig = y })
instance HasLogFunc GitlabTestApp where
logFuncL = lens logFunc (\x y -> x { logFunc = y })
runLogVanish :: (Show a) => GitlabTestApp -> RIO GitlabTestApp a -> IO ()
runLogVanish app f = void $ asIO $ runRIO app $ f >>= logInfo . displayShow
glproj = "locallycompact/gitlab-api"
main :: IO ()
main = do
envPrivateToken <- liftIO $ getEnv "GITLAB_PRIVATE_TOKEN"
let gconf = GitlabConfig
{ glBaseUrl = "https://gitlab.com"
, glToken = Text.pack envPrivateToken
}
logOptions <- logOptionsHandle stdout True
withLogFunc logOptions $ \l -> do
let app = GitlabTestApp gconf l
hspec $ do
describe "Gitlab.Projects"
$ it "getCommitData works"
$ runLogVanish app
$ getCommitData glProj "master"
describe "Gitlab.Wikis" $ do
it "getProjectWiki works" $ runLogVanish app $ getProjectWiki glproj
it "createWikiPage works"
$ runLogVanish app
$ createWikiPage glproj
$ GitlabWikiPage "foo" "markdown" "foo" "foo"