55// See LICENSE for license information.
66//
77
8- import Foundation
98import Testing
109
1110@testable import Ignite
@@ -14,8 +13,54 @@ import Testing
1413@Suite ( " HoverModifier Tests " )
1514@MainActor
1615class HoverModifierTests : IgniteTestSuite {
17- @Test ( " ExampleTest " )
18- func example( ) async throws {
16+ @Test ( " onHover adds both onmouseover and onmouseout attributes " )
17+ func hoverAddsMouseEvents( ) async throws {
18+ let element = Text ( " Hover me " )
19+ . onHover { isHovering in
20+ if isHovering {
21+ ShowAlert ( message: " entered " )
22+ } else {
23+ ShowAlert ( message: " left " )
24+ }
25+ }
1926
27+ let output = element. markupString ( )
28+
29+ #expect( output. contains ( " onmouseover= " ) )
30+ #expect( output. contains ( " onmouseout= " ) )
31+ }
32+
33+ @Test ( " Hover true actions go to onmouseover " )
34+ func hoverTrueGoesToMouseOver( ) async throws {
35+ let element = Text ( " Hover me " )
36+ . onHover { isHovering in
37+ if isHovering {
38+ ShowAlert ( message: " over " )
39+ } else {
40+ ShowAlert ( message: " out " )
41+ }
42+ }
43+
44+ let output = element. markupString ( )
45+
46+ #expect( output. contains ( #"onmouseover="alert('over')"# ) )
47+ #expect( output. contains ( #"onmouseout="alert('out')"# ) )
48+ }
49+
50+ @Test ( " onHover works on inline elements " )
51+ func hoverOnInlineElement( ) async throws {
52+ let element = Emphasis ( " Hover me " )
53+ . onHover { isHovering in
54+ if isHovering {
55+ ShowAlert ( message: " in " )
56+ } else {
57+ ShowAlert ( message: " out " )
58+ }
59+ }
60+
61+ let output = element. markupString ( )
62+
63+ #expect( output. contains ( " onmouseover= " ) )
64+ #expect( output. contains ( " onmouseout= " ) )
2065 }
2166}
0 commit comments