Skip to content

Commit eeea7a0

Browse files
committed
Move style modifier tests into seperate file
1 parent 368bc8e commit eeea7a0

File tree

10 files changed

+551
-451
lines changed

10 files changed

+551
-451
lines changed

Sources/WebUI/Elements/Text/Text.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public struct Text: Element {
5454
let tag = sentenceCount > 1 ? "p" : "span"
5555
let attributes = buildAttributes()
5656

57-
return "<\(tag) \(attributes.joined(separator: " "))>\(renderedContent)</\(tag)>"
57+
return
58+
"<\(tag)\(attributes.count > 0 ? " " : "")\(attributes.joined(separator: " "))>\(renderedContent)</\(tag)>"
5859
}
5960

6061
private func buildAttributes() -> [String] {

Tests/WebUITests/Core/DocumentTests.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,20 +172,11 @@ struct CustomHeadDocument: Document {
172172

173173
@Suite("Document Tests")
174174
struct DocumentTests {
175-
176175
@Test("Document renders correctly with nil description")
177176
func testNilDescriptionDocument() throws {
178177
let document = NoDescriptionDocument()
179178
let rendered = document.head ?? ""
180179

181-
#expect(
182-
rendered.contains("<title>No Description Test Site</title>"),
183-
"Title set correctly"
184-
)
185-
#expect(
186-
rendered.contains("<meta property=\"og:title\" content=\"No Description Test Site\">"),
187-
"OG title set correctly"
188-
)
189180
#expect(
190181
!rendered.contains("<meta name=\"description\""),
191182
"Description meta tag should not be present"
@@ -194,7 +185,6 @@ struct DocumentTests {
194185
!rendered.contains("<meta property=\"og:description\""),
195186
"OG description meta tag should not be present"
196187
)
197-
#expect(rendered.contains("Test content"), "Content rendered correctly")
198188
}
199189

200190
@Test("Document renders basic metadata correctly")

Tests/WebUITests/Core/WebsiteTests.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,6 @@ struct Portfolio: Website {
524524
var metadata: Metadata {
525525
Metadata(
526526
site: "Jane Doe",
527-
title: "Portfolio",
528527
description: "Full-stack developer portfolio",
529528
author: "Jane Doe",
530529
keywords: ["developer", "portfolio", "web development", "swift", "javascript"],
@@ -599,7 +598,6 @@ struct ComprehensiveWebsiteTests {
599598
let portfolio = Portfolio()
600599

601600
#expect(portfolio.metadata.site == "Jane Doe")
602-
#expect(portfolio.metadata.title == "Portfolio")
603601
#expect(portfolio.routes.count == 4)
604602
#expect(portfolio.baseURL == "https://janedoe.dev")
605603
#expect(portfolio.sitemapEntries?.count == 2)
@@ -634,6 +632,7 @@ struct ComprehensiveWebsiteTests {
634632
#expect(indexContent.contains("<img"))
635633

636634
// Test specific meta tags
635+
#expect(indexContent.contains("<title>Portfolio Jane Doe</title>"))
637636
#expect(indexContent.contains("<meta charset=\"utf-8\">"))
638637
#expect(indexContent.contains("<meta name=\"viewport\""))
639638
#expect(indexContent.contains("width=device-width"))

Tests/WebUITests/ElementTests.swift

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ import Testing
8989
#expect(rendered.contains("<picture"))
9090
#expect(rendered.contains("id=\"profile-pic\""))
9191
#expect(rendered.contains("class=\"rounded\""))
92-
#expect(rendered.contains("<source src=\"/image.jpg\" type=\"image/jpeg\">"))
93-
#expect(rendered.contains("<source src=\"/image.webp\" type=\"image/webp\">"))
92+
#expect(rendered.contains("<source type=\"image/jpeg\" srcset=\"/image.jpg\" />"))
93+
#expect(rendered.contains("<source type=\"image/webp\" srcset=\"/image.webp\" />"))
9494
#expect(rendered.contains("<img"))
9595
#expect(rendered.contains("alt=\"Profile picture\""))
9696
#expect(rendered.contains("width=\"300\""))
@@ -116,8 +116,8 @@ import Testing
116116
#expect(rendered.contains("id=\"mountain-fig\""))
117117
#expect(rendered.contains("class=\"image-figure\""))
118118
#expect(rendered.contains("<picture"))
119-
#expect(rendered.contains("<source src=\"/large.jpg\" type=\"image/jpeg\">"))
120-
#expect(rendered.contains("<source src=\"/small.webp\" type=\"image/webp\">"))
119+
#expect(rendered.contains("<source type=\"image/jpeg\" srcset=\"/large.jpg\" />"))
120+
#expect(rendered.contains("<source type=\"image/webp\" srcset=\"/small.webp\" />"))
121121
#expect(rendered.contains("<img"))
122122
#expect(rendered.contains("alt=\"A scenic mountain view\""))
123123
#expect(rendered.contains("width=\"800\""))
@@ -554,13 +554,13 @@ import Testing
554554
#expect(rendered.contains("<label for=\"name\">Name:</label>"))
555555
#expect(
556556
rendered.contains(
557-
"<input id=\"name\" name=\"name\" type=\"text\" required>"
557+
"<input id=\"name\" name=\"name\" type=\"text\" required />"
558558
)
559559
)
560560
#expect(rendered.contains("<label for=\"email\">Email:</label>"))
561561
#expect(
562562
rendered.contains(
563-
"<input id=\"email\" name=\"email\" type=\"email\" required>"
563+
"<input id=\"email\" name=\"email\" type=\"email\" required />"
564564
)
565565
)
566566
#expect(rendered.contains("<label for=\"message\">Message:</label>"))
@@ -571,7 +571,7 @@ import Testing
571571
)
572572
#expect(
573573
rendered.contains(
574-
"<input id=\"subscribe\" name=\"subscribe\" type=\"checkbox\">"
574+
"<input id=\"subscribe\" name=\"subscribe\" type=\"checkbox\" />"
575575
)
576576
)
577577
#expect(
@@ -666,7 +666,7 @@ import Testing
666666
@Test("Element with ARIA attributes")
667667
func testElementWithAriaAttributes() async throws {
668668
let element = Stack(
669-
role: AriaRole.tabpanel,
669+
role: .tabpanel,
670670
label: "Panel Description"
671671
) { "Tab panel content" }
672672

@@ -682,7 +682,7 @@ import Testing
682682
@Test("Interactive element with ARIA roles")
683683
func testInteractiveElementWithAriaRoles() async throws {
684684
let tabContainer = Stack(
685-
role: AriaRole.tablist
685+
role: .tablist
686686
) {
687687
Button(
688688
role: AriaRole.tab,
@@ -734,10 +734,8 @@ import Testing
734734
"Special & characters < need > to be & escaped"
735735
}
736736

737-
// Note: We're not actually testing HTML escaping here since the render method doesn't
738-
// implement escaping in the provided code. This would need to be added to the Element class.
739737
let rendered = text.render()
740-
#expect(rendered.contains("Special & characters < need > to be & escaped"))
738+
#expect(rendered.contains("Special & characters &lt; need &gt; to be & escaped"))
741739
}
742740

743741
@Test("Deeply nested elements")
@@ -812,7 +810,7 @@ import Testing
812810

813811
@Test("Element with empty data attributes")
814812
func testEmptyDatAttributes() async throws {
815-
let element = Stack( data: [:] )
813+
let element = Stack(data: [:])
816814

817815
let rendered = element.render()
818816
#expect(rendered == "<div></div>")

Tests/WebUITests/Styles/AppearanceTests.swift

Lines changed: 8 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,7 @@ import Testing
1212
#expect(rendered.contains("class=\"opacity-50\""))
1313
}
1414

15-
@Test("Opacity with hover modifier")
16-
func testOpacityWithHoverModifier() async throws {
17-
let element = Stack().opacity(75, on: .hover)
18-
let rendered = element.render()
19-
#expect(rendered.contains("class=\"hover:opacity-75\""))
20-
}
2115

22-
@Test("Opacity with multiple modifiers")
23-
func testOpacityWithMultipleModifiers() async throws {
24-
let element = Stack().opacity(25, on: .hover, .md)
25-
let rendered = element.render()
26-
#expect(rendered.contains("class=\"hover:md:opacity-25\""))
27-
}
2816

2917
// MARK: - Background Color Tests
3018

@@ -42,12 +30,7 @@ import Testing
4230
#expect(rendered.contains("class=\"bg-red-300/50\""))
4331
}
4432

45-
@Test("Background color with hover modifier")
46-
func testBackgroundColorWithHoverModifier() async throws {
47-
let element = Stack().background(color: .green(._700), on: .hover)
48-
let rendered = element.render()
49-
#expect(rendered.contains("class=\"hover:bg-green-700\""))
50-
}
33+
5134

5235
@Test("Custom background color")
5336
func testCustomBackgroundColor() async throws {
@@ -93,12 +76,7 @@ import Testing
9376
#expect(rendered.contains("class=\"divide-x-1\""))
9477
}
9578

96-
@Test("Border with modifiers")
97-
func testBorderWithModifiers() async throws {
98-
let element = Stack().border(of: 3, on: .hover, .md)
99-
let rendered = element.render()
100-
#expect(rendered.contains("class=\"hover:md:border-3\""))
101-
}
79+
10280

10381
// MARK: - Outline Tests
10482

@@ -109,12 +87,7 @@ import Testing
10987
#expect(rendered.contains("class=\"outline-2 outline-purple-600\""))
11088
}
11189

112-
@Test("Outline with style and modifier")
113-
func testOutlineWithStyleAndModifier() async throws {
114-
let element = Stack().outline(style: .dashed, on: .focus)
115-
let rendered = element.render()
116-
#expect(rendered.contains("class=\"focus:outline-dashed\""))
117-
}
90+
11891

11992
// MARK: - Shadow Tests
12093

@@ -125,12 +98,7 @@ import Testing
12598
#expect(rendered.contains("class=\"shadow-lg\""))
12699
}
127100

128-
@Test("Shadow with color and modifier")
129-
func testShadowWithColorAndModifier() async throws {
130-
let element = Stack().shadow(size: .md, color: .gray(._500), on: .hover)
131-
let rendered = element.render()
132-
#expect(rendered.contains("class=\"hover:shadow-md hover:shadow-gray-500\""))
133-
}
101+
134102

135103
// MARK: - Ring Tests
136104

@@ -141,12 +109,7 @@ import Testing
141109
#expect(rendered.contains("class=\"ring-1\""))
142110
}
143111

144-
@Test("Ring with color and modifier")
145-
func testRingWithColorAndModifier() async throws {
146-
let element = Stack().ring(size: 2, color: .pink(._400), on: .focus)
147-
let rendered = element.render()
148-
#expect(rendered.contains("class=\"focus:ring-2 focus:ring-pink-400\""))
149-
}
112+
150113

151114
// MARK: - Flex Tests
152115

@@ -164,12 +127,7 @@ import Testing
164127
#expect(rendered.contains("class=\"flex items-center flex-1\""))
165128
}
166129

167-
@Test("Flex with modifiers")
168-
func testFlexWithModifiers() async throws {
169-
let element = Stack().flex(direction: .column, on: .md)
170-
let rendered = element.render()
171-
#expect(rendered.contains("class=\"md:flex md:flex-col\""))
172-
}
130+
173131

174132
// MARK: - Hidden Tests
175133

@@ -180,12 +138,7 @@ import Testing
180138
#expect(rendered.contains("class=\"hidden\""))
181139
}
182140

183-
@Test("Hidden with modifier")
184-
func testHiddenWithModifier() async throws {
185-
let element = Stack().hidden(true, on: .sm)
186-
let rendered = element.render()
187-
#expect(rendered.contains("class=\"sm:hidden\""))
188-
}
141+
189142

190143
@Test("Not hidden")
191144
func testNotHidden() async throws {
@@ -203,19 +156,7 @@ import Testing
203156
#expect(rendered.contains("class=\"display-block\""))
204157
}
205158

206-
@Test("Display element as inline-block with hover")
207-
func testDisplayAsInlineBlockWithHover() async throws {
208-
let element = Stack().display(.inlineBlock, on: .hover)
209-
let rendered = element.render()
210-
#expect(rendered.contains("class=\"hover:display-inline-block\""))
211-
}
212159

213-
@Test("Display as table on medium screens")
214-
func testDisplayAsTableOnMedium() async throws {
215-
let element = Stack().display(.table, on: .md)
216-
let rendered = element.render()
217-
#expect(rendered.contains("class=\"md:display-table\""))
218-
}
219160

220161
// MARK: - Complex Appearance Tests
221162

@@ -224,12 +165,11 @@ import Testing
224165
let element = Stack()
225166
.background(color: .blue(._600))
226167
.border(of: 1, style: .solid, color: .blue(._800))
227-
.opacity(90, on: .hover)
228168
.flex(direction: .row, justify: .center)
229169
let rendered = element.render()
230170
#expect(
231171
rendered.contains(
232-
"class=\"bg-blue-600 border-1 border-solid border-blue-800 hover:opacity-90 flex flex-row justify-center\""
172+
"class=\"bg-blue-600 border-1 border-solid border-blue-800 flex flex-row justify-center\""
233173
)
234174
)
235175
}

0 commit comments

Comments
 (0)