Files
ccn/Packages/Infrastructure/Tests/Cases/Public/Extensions/MarkupContentReportingTests.swift
T

68 lines
1.8 KiB
Swift
Raw Normal View History

2026-10-25 11:55:43 +01:00
#if Analytics
import Elementary
import Testing
@testable import Infrastructure
@Suite(
"MarkupContent+Reporting extension",
.tags(.extension)
)
struct MarkupContentReportingTests {
// MARK: Methods tests
@Test
func `renders the same markup as applying the event's tagging`() {
let event = Analytics.Event(
name: "playlist",
properties: ["set": "avc-xi"]
)
let reported = a(.href("/")) { "Listen" }
.reporting(event)
.render()
let tagged = a(.href("/")) { "Listen" }
.attributes(contentsOf: event.tagging())
.render()
#expect(reported == tagged)
#expect(reported == #"<a href="/" data-umami-event="playlist" data-umami-event-set="avc-xi">Listen</a>"#)
}
@Test
func `keeps the attributes chained before it`() {
let rendered = a(.href("https://example.com")) { "Listen" }
.attributes(.target(.blank), when: true)
.reporting(.init(name: "playlist"))
.render()
#expect(rendered == #"<a href="https://example.com" target="_blank" data-umami-event="playlist">Listen</a>"#)
}
@Test
func `tags a view under its own prefix`() {
let rendered = h2 { "KLM" }
.reporting(
.init(
name: "case_view",
properties: ["case": "klm"]
),
on: .view
)
.render()
#expect(rendered == #"<h2 data-view-event="case_view" data-view-event-case="klm">KLM</h2>"#)
}
@Test
func `reports from an SVG tag`() {
let rendered = SVG.path {}
.reporting(.init(name: "logo"))
.render()
#expect(rendered.contains(#"data-umami-event="logo""#))
}
}
#endif