hs-opentelemetry-api-0.2.0.0: test/OpenTelemetry/AttributesSpec.hs
{-# LANGUAGE PatternSynonyms #-}
module OpenTelemetry.AttributesSpec where
import qualified Data.Text as T
import qualified OpenTelemetry.Attributes as A
import qualified Test.Hspec as Hspec
spec :: Hspec.Spec
spec = Hspec.describe "Attributes" $ do
Hspec.describe "addAttribute" $ do
let overwritesPrevious :: (A.ToAttribute a) => T.Text -> a -> a -> A.Attributes -> Hspec.Spec
overwritesPrevious attrKey newValue prevValue attrs = do
let addAttr = addAttributeDefault attrKey
Hspec.it "Overwrites previous value with new value at this key." $
addAttr newValue (addAttr prevValue attrs) `Hspec.shouldBe` addAttr newValue attrs
overwritesPrevious Example ("new value" :: T.Text) "prev value" A.emptyAttributes
Hspec.describe "unsafeMergeAttributesIgnoringLimits" $ do
Hspec.it "Is left-biased when keys conflict" $ do
let left = addAttributeDefault Example (1 :: Int) A.emptyAttributes
right = addAttributeDefault Example (2 :: Int) A.emptyAttributes
A.unsafeMergeAttributesIgnoringLimits left right `Hspec.shouldBe` left
pattern Example :: T.Text
pattern Example = "example"
addAttributeDefault :: (A.ToAttribute a) => T.Text -> a -> A.Attributes -> A.Attributes
addAttributeDefault attrKey value attrs = A.addAttribute A.defaultAttributeLimits attrs attrKey value