From a71edd37ab5ddf85636d7959e4650bc19bac1057 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Fri, 4 Sep 2026 14:57:29 +0200 Subject: [PATCH] Updated the event tagging for the AnalyticsEvent+Tagging extension in the Infrastructure package to support attribute-capable tags. --- .../Public/Extensions/AnalyticsEvent+Tagging.swift | 2 +- .../Public/Extensions/AnalyticsEventTaggingTests.swift | 10 ++++++++++ .../Tests/Cases/Public/Types/StructuredDataTests.swift | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Packages/Infrastructure/Sources/Public/Extensions/AnalyticsEvent+Tagging.swift b/Packages/Infrastructure/Sources/Public/Extensions/AnalyticsEvent+Tagging.swift index 2605648..8207a05 100644 --- a/Packages/Infrastructure/Sources/Public/Extensions/AnalyticsEvent+Tagging.swift +++ b/Packages/Infrastructure/Sources/Public/Extensions/AnalyticsEvent+Tagging.swift @@ -12,7 +12,7 @@ public extension Analytics.Event { /// ``` /// /// - Returns: one HTML attribute per event attribute, applied verbatim. - func tagging() -> [HTMLAttribute] { + func tagging() -> [HTMLAttribute] { attributes.map { .custom( name: $0.name, diff --git a/Packages/Infrastructure/Tests/Cases/Public/Extensions/AnalyticsEventTaggingTests.swift b/Packages/Infrastructure/Tests/Cases/Public/Extensions/AnalyticsEventTaggingTests.swift index 174225c..3501bb1 100644 --- a/Packages/Infrastructure/Tests/Cases/Public/Extensions/AnalyticsEventTaggingTests.swift +++ b/Packages/Infrastructure/Tests/Cases/Public/Extensions/AnalyticsEventTaggingTests.swift @@ -46,4 +46,14 @@ struct AnalyticsEventTaggingTests { #expect(attributes.count == event.attributes.count) } + @Test + func `applies the event name to an SVG tag`() { + // `SVGTag.path` is no `HTMLTrait.Attributes.Global`, so this stops compiling if the method narrows back to HTML tags. + let rendered = SVG.path {} + .attributes(contentsOf: Analytics.Event(name: "logo").tagging()) + .render() + + #expect(rendered.contains(#"data-umami-event="logo""#)) + } + } diff --git a/Packages/Infrastructure/Tests/Cases/Public/Types/StructuredDataTests.swift b/Packages/Infrastructure/Tests/Cases/Public/Types/StructuredDataTests.swift index c2a8603..f7eac81 100644 --- a/Packages/Infrastructure/Tests/Cases/Public/Types/StructuredDataTests.swift +++ b/Packages/Infrastructure/Tests/Cases/Public/Types/StructuredDataTests.swift @@ -17,6 +17,7 @@ struct StructuredDataTests { name: "A Site", url: "https://site.example/", logo: "https://site.example/logo.png", + inLanguage: ["en", "nl"], profiles: [ "https://social.example/a-site", "https://videos.example/a-site", @@ -26,7 +27,7 @@ struct StructuredDataTests { #expect(data.payload == #"{"@context":"https://schema.org","@graph":["# + #"{"@type":"Organization","@id":"https://site.example/#organization","name":"A Site","url":"https://site.example/","logo":"https://site.example/logo.png","# + #""sameAs":["https://social.example/a-site","https://videos.example/a-site"]},"# + - #"{"@type":"WebSite","name":"A Site","url":"https://site.example/","publisher":{"@id":"https://site.example/#organization"}}]}"# + #"{"@type":"WebSite","name":"A Site","url":"https://site.example/","publisher":{"@id":"https://site.example/#organization"},"inLanguage":["en","nl"]}]}"# ) }