packages feed

monad-logger-aeson-0.4.0.0: test-suite/Test/Control/Monad/Logger/AesonSpec.hs

{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeApplications #-}
module Test.Control.Monad.Logger.AesonSpec
  ( spec
  ) where

import Test.Hspec (Spec, aroundAll, describe, it)
import TestCase (runTest, withTempLogFile)
import qualified TestCase.LogDebug.MetadataNoThreadContextNo
import qualified TestCase.LogDebug.MetadataNoThreadContextYes
import qualified TestCase.LogDebug.MetadataYesThreadContextNo
import qualified TestCase.LogDebug.MetadataYesThreadContextYes
import qualified TestCase.LogDebugN.MetadataNoThreadContextNo
import qualified TestCase.LogDebugN.MetadataNoThreadContextYes
import qualified TestCase.LogDebugN.MetadataYesThreadContextNo
import qualified TestCase.LogDebugN.MetadataYesThreadContextYes
import qualified TestCase.LogDebugNS.MetadataNoThreadContextNo
import qualified TestCase.LogDebugNS.MetadataNoThreadContextYes
import qualified TestCase.LogDebugNS.MetadataYesThreadContextNo
import qualified TestCase.LogDebugNS.MetadataYesThreadContextYes
import qualified TestCase.LogError.MetadataNoThreadContextNo
import qualified TestCase.LogError.MetadataNoThreadContextYes
import qualified TestCase.LogError.MetadataYesThreadContextNo
import qualified TestCase.LogError.MetadataYesThreadContextYes
import qualified TestCase.LogErrorN.MetadataNoThreadContextNo
import qualified TestCase.LogErrorN.MetadataNoThreadContextYes
import qualified TestCase.LogErrorN.MetadataYesThreadContextNo
import qualified TestCase.LogErrorN.MetadataYesThreadContextYes
import qualified TestCase.LogErrorNS.MetadataNoThreadContextNo
import qualified TestCase.LogErrorNS.MetadataNoThreadContextYes
import qualified TestCase.LogErrorNS.MetadataYesThreadContextNo
import qualified TestCase.LogErrorNS.MetadataYesThreadContextYes
import qualified TestCase.LogInfo.MetadataNoThreadContextNo
import qualified TestCase.LogInfo.MetadataNoThreadContextYes
import qualified TestCase.LogInfo.MetadataYesThreadContextNo
import qualified TestCase.LogInfo.MetadataYesThreadContextYes
import qualified TestCase.LogInfoN.MetadataNoThreadContextNo
import qualified TestCase.LogInfoN.MetadataNoThreadContextYes
import qualified TestCase.LogInfoN.MetadataYesThreadContextNo
import qualified TestCase.LogInfoN.MetadataYesThreadContextYes
import qualified TestCase.LogInfoNS.MetadataNoThreadContextNo
import qualified TestCase.LogInfoNS.MetadataNoThreadContextYes
import qualified TestCase.LogInfoNS.MetadataYesThreadContextNo
import qualified TestCase.LogInfoNS.MetadataYesThreadContextYes
import qualified TestCase.LogOther.MetadataNoThreadContextNo
import qualified TestCase.LogOther.MetadataNoThreadContextYes
import qualified TestCase.LogOther.MetadataYesThreadContextNo
import qualified TestCase.LogOther.MetadataYesThreadContextYes
import qualified TestCase.LogOtherN.MetadataNoThreadContextNo
import qualified TestCase.LogOtherN.MetadataNoThreadContextYes
import qualified TestCase.LogOtherN.MetadataYesThreadContextNo
import qualified TestCase.LogOtherN.MetadataYesThreadContextYes
import qualified TestCase.LogOtherNS.MetadataNoThreadContextNo
import qualified TestCase.LogOtherNS.MetadataNoThreadContextYes
import qualified TestCase.LogOtherNS.MetadataYesThreadContextNo
import qualified TestCase.LogOtherNS.MetadataYesThreadContextYes
import qualified TestCase.LogWarn.MetadataNoThreadContextNo
import qualified TestCase.LogWarn.MetadataNoThreadContextYes
import qualified TestCase.LogWarn.MetadataYesThreadContextNo
import qualified TestCase.LogWarn.MetadataYesThreadContextYes
import qualified TestCase.LogWarnN.MetadataNoThreadContextNo
import qualified TestCase.LogWarnN.MetadataNoThreadContextYes
import qualified TestCase.LogWarnN.MetadataYesThreadContextNo
import qualified TestCase.LogWarnN.MetadataYesThreadContextYes
import qualified TestCase.LogWarnNS.MetadataNoThreadContextNo
import qualified TestCase.LogWarnNS.MetadataNoThreadContextYes
import qualified TestCase.LogWarnNS.MetadataYesThreadContextNo
import qualified TestCase.LogWarnNS.MetadataYesThreadContextYes
import qualified TestCase.MonadLogger.LogDebug.ThreadContextNo
import qualified TestCase.MonadLogger.LogDebug.ThreadContextYes
import qualified TestCase.MonadLogger.LogDebugN.ThreadContextNo
import qualified TestCase.MonadLogger.LogDebugN.ThreadContextYes

spec :: Spec
spec = do
  aroundAll withTempLogFile $ do
    describe "Control.Monad.Logger.Aeson" $ do
      describe "logDebug" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebug.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebug.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebug.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebug.MetadataYesThreadContextYes.testCase logFilePath

      describe "logInfo" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfo.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfo.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfo.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfo.MetadataYesThreadContextYes.testCase logFilePath

      describe "logWarn" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarn.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarn.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarn.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarn.MetadataYesThreadContextYes.testCase logFilePath

      describe "logError" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogError.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogError.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogError.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogError.MetadataYesThreadContextYes.testCase logFilePath

      describe "logOther" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOther.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOther.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOther.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOther.MetadataYesThreadContextYes.testCase logFilePath

      describe "logDebugN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugN.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugN.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugN.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugN.MetadataYesThreadContextYes.testCase logFilePath

      describe "logInfoN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoN.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoN.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoN.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoN.MetadataYesThreadContextYes.testCase logFilePath

      describe "logWarnN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnN.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnN.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnN.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnN.MetadataYesThreadContextYes.testCase logFilePath

      describe "logErrorN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorN.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorN.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorN.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorN.MetadataYesThreadContextYes.testCase logFilePath

      describe "logOtherN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherN.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherN.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherN.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherN.MetadataYesThreadContextYes.testCase logFilePath

      describe "logDebugNS" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugNS.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugNS.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugNS.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogDebugNS.MetadataYesThreadContextYes.testCase logFilePath

      describe "logInfoNS" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoNS.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoNS.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoNS.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogInfoNS.MetadataYesThreadContextYes.testCase logFilePath

      describe "logWarnNS" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnNS.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnNS.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnNS.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogWarnNS.MetadataYesThreadContextYes.testCase logFilePath

      describe "logErrorNS" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorNS.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorNS.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorNS.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogErrorNS.MetadataYesThreadContextYes.testCase logFilePath

      describe "logOtherNS" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherNS.MetadataNoThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherNS.MetadataNoThreadContextYes.testCase logFilePath
        it "metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherNS.MetadataYesThreadContextNo.testCase logFilePath
        it "metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.LogOtherNS.MetadataYesThreadContextYes.testCase logFilePath

    describe "Control.Monad.Logger.CallStack ('log*' from 'monad-logger')" $ do
      describe "logDebug" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.MonadLogger.LogDebug.ThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.MonadLogger.LogDebug.ThreadContextYes.testCase logFilePath

      describe "logDebugN" $ do
        it "no metadata + no thread context" $ \logFilePath -> do
          runTest $ TestCase.MonadLogger.LogDebugN.ThreadContextNo.testCase logFilePath
        it "no metadata + thread context" $ \logFilePath -> do
          runTest $ TestCase.MonadLogger.LogDebugN.ThreadContextYes.testCase logFilePath