{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module TestCase.MonadLogger.LogDebug.ThreadContextNo ( testCase ) where import Control.Monad.Logger.Aeson (Loc(..), LogLevel(..), LoggedMessage(..)) import Data.Aeson.QQ.Simple (aesonQQ) import Data.Time (UTCTime(..)) import TestCase (TestCase(..)) import qualified Control.Monad.Logger.Aeson.Internal as Internal import qualified Control.Monad.Logger.CallStack as ML import qualified Data.Time as Time testCase :: FilePath -> TestCase testCase logFilePath = TestCase { actionUnderTest = do ML.logDebug "Logged from 'monad-logger'" , logFilePath , expectedValue = [aesonQQ| { "time": "2022-05-07T20:03:54.0000000Z", "level": "debug", "location": { "package": "main", "module": "TestCase.MonadLogger.LogDebug.ThreadContextNo", "file": "test-suite/TestCase/MonadLogger/LogDebug/ThreadContextNo.hs", "line": 20, "char": 9 }, "message": { "text": "Logged from 'monad-logger'" } } |] , expectedPatch = [aesonQQ| [ { "op": "replace", "path": "/time", "value": "2022-05-07T20:03:54.0000000Z" } ] |] , expectedLoggedMessage = LoggedMessage { loggedMessageTimestamp = UTCTime { utctDay = Time.fromGregorian 2022 05 07 , utctDayTime = 72234 } , loggedMessageLevel = LevelDebug , loggedMessageLoc = Just Loc { loc_package = "main" , loc_module = "TestCase.MonadLogger.LogDebug.ThreadContextNo" , loc_filename = "test-suite/TestCase/MonadLogger/LogDebug/ThreadContextNo.hs" , loc_start = (20, 9) , loc_end = (0, 0) } , loggedMessageLogSource = Nothing , loggedMessageThreadContext = Internal.emptyKeyMap , loggedMessageText = "Logged from 'monad-logger'" , loggedMessageMeta = Internal.emptyKeyMap } }