68 lines
1.8 KiB
Swift
68 lines
1.8 KiB
Swift
#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
|