packages feed

bugsnag-1.0.0.0: test/Network/Bugsnag/BeforeNotifySpec.hs

module Network.Bugsnag.BeforeNotifySpec
    ( spec
    ) where


import Prelude

import Control.Exception
import Data.Bugsnag hiding (Exception)
import Network.Bugsnag.BeforeNotify
import Test.Hspec

data FooException = FooException
    deriving stock Show
    deriving anyclass Exception

data BarException = BarException
    deriving stock Show
    deriving anyclass Exception

data BazException = BazException
    deriving stock Show
    deriving anyclass Exception

spec :: Spec
spec = do
    describe "updateEventFromOriginalException" $ do
        it "can update based on unknown exception types" $ do
            let asFoo FooException = setGroupingHash "Saw Foo"
                asBar BarException = setGroupingHash "Saw Bar"

                bn = mconcat
                    [ updateEventFromOriginalException asFoo
                    , updateEventFromOriginalException asBar
                    ]

            event_groupingHash (runBeforeNotify bn FooException defaultEvent)
                `shouldBe` Just "Saw Foo"

            event_groupingHash (runBeforeNotify bn BarException defaultEvent)
                `shouldBe` Just "Saw Bar"

            event_groupingHash (runBeforeNotify bn BazException defaultEvent)
                `shouldBe` Nothing