packages feed

mandrill-0.1.0.0: test/Main.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import           System.Environment
import           Data.Monoid
import           Tests
import           Online
import           Test.Tasty
import           Test.Tasty.HUnit
import           Test.Tasty.QuickCheck
import qualified Data.Text as T

----------------------------------------------------------------------
withQuickCheckDepth :: TestName -> Int -> [TestTree] -> TestTree
withQuickCheckDepth tn depth tests =
  localOption (QuickCheckTests depth) (testGroup tn tests)

----------------------------------------------------------------------
onlineTestsIfEnabled :: IO [TestTree]
onlineTestsIfEnabled = do
  apiKey <- (return . fmap T.pack) =<< lookupEnv "MANDRILL_API_KEY"
  case apiKey of
    Nothing -> return []
    Just k  -> return [
                 testGroup "Mandrill online tests" [
                   testCase "users/info.json" (testOnlineUsersInfo k)
                 , testCase "users/ping2.json" (testOnlineUsersPing2 k)
                 , testCase "users/senders.json" (testOnlineUsersSenders k)
                 , testCase "messages/send.json" (testOnlineMessagesSend k)
                 ]]

----------------------------------------------------------------------
main :: IO ()
main = do
  onlineTests <- onlineTestsIfEnabled
  defaultMainWithIngredients defaultIngredients $
    testGroup "Mandrill tests" $ onlineTests <> [
         testGroup "Mandrill offline tests" [
           testCase "users/info.json API parsing"    testUsersInfo
         , testCase "users/senders.json API parsing" testUsersSenders
         , testCase "messages/send.json API parsing" testMessagesSend
         ]
     ]