@@ -2,133 +2,90 @@ package scripttests
2
2
3
3
import (
4
4
"github.com/gost-dom/browser/dom/event"
5
- . "github.com/onsi/ginkgo/v2 "
5
+ "github.com/gost-dom/browser/html "
6
6
. "github.com/onsi/gomega"
7
7
)
8
8
9
- func (suite * ScriptTestSuite ) CreateEventTargetTests () {
10
- prefix := suite .Prefix
11
-
12
- Describe (prefix + "EventTarget" , func () {
13
- var ctx * ScriptTestContext
14
-
15
- BeforeEach (func () {
16
- ctx = suite .NewContext ()
17
- })
18
-
19
- It ("New event target is an EventTarget" , func () {
20
- Expect (ctx .Eval ("typeof (new EventTarget())" )).To (Equal ("object" ))
21
- Expect (ctx .Eval ("(new EventTarget()) instanceof EventTarget" )).To (BeTrue ())
22
- })
23
-
24
- It ("Isn't cancellable by default" , func () {
25
- Expect (ctx .Eval (`
26
- const target = new EventTarget();
27
- target.addEventListener("custom", e => { e.preventDefault() });
28
- target.dispatchEvent(new CustomEvent("custom"))
29
- ` )).To (BeTrue ())
30
- })
9
+ type EventTargetTestSuite struct {
10
+ ScriptHostSuite
11
+ }
31
12
32
- It ("Can be cancelled" , func () {
33
- Expect (ctx .Eval (`
34
- const target = new EventTarget();
35
- target.addEventListener("custom", e => { e.preventDefault() });
36
- target.dispatchEvent(new CustomEvent("custom", {cancelable: true }))
37
- ` )).To (BeFalse ())
38
- })
13
+ func NewEventTargetTestSuite (h html.ScriptHost ) * EventTargetTestSuite {
14
+ return & EventTargetTestSuite {ScriptHostSuite : * NewScriptHostSuite (h )}
15
+ }
39
16
40
- It ("Doesn't bubble by default" , func () {
41
- if suite .SkipDOM {
42
- Skip ("Suite doesn't support a DOM" )
43
- }
44
- ctx .Window .LoadHTML (`<div id="parent"><div id="target"></div></div>` )
45
- Expect (ctx .Run (`
46
- var targetCalled = false;
47
- var parentCalled = false;
48
- const target = document.getElementById("target")
49
- target.addEventListener("go:home", e => { targetCalled = true });
50
- document.getElementById("parent").addEventListener(
51
- "go:home",
52
- e => { parentCalled = true });
53
- target.dispatchEvent(new CustomEvent("go:home", {}))
54
- ` )).To (Succeed ())
55
- Expect (ctx .Eval ("targetCalled" )).To (BeTrue (), "Target handler called" )
56
- Expect (ctx .Eval ("parentCalled" )).To (BeFalse (), "Parent handler called" )
57
- })
17
+ func (s * EventTargetTestSuite ) TestPrototype () {
18
+ s .Expect (s .mustEval ("typeof (new EventTarget())" )).To (Equal ("object" ))
19
+ s .Expect (s .mustEval ("(new EventTarget()) instanceof EventTarget" )).To (BeTrue ())
20
+ }
58
21
59
- It ("Bubbles when specified in the constructor" , func () {
60
- if suite .SkipDOM {
61
- Skip ("Suite doesn't support a DOM" )
62
- }
63
- ctx .Window .LoadHTML (`<div id="parent"><div id="target"></div></div>` )
64
- Expect (ctx .Run (`
65
- var targetCalled = false;
66
- var parentCalled = false;
67
- const target = document.getElementById("target")
68
- target.addEventListener("go:home", e => { targetCalled = true });
69
- document.getElementById("parent").addEventListener(
70
- "go:home",
71
- e => { parentCalled = true });
72
- target.dispatchEvent(new CustomEvent("go:home", { bubbles: true }))
73
- ` )).To (Succeed ())
74
- Expect (ctx .Eval ("targetCalled" )).To (BeTrue ())
75
- Expect (ctx .Eval ("parentCalled" )).To (BeTrue ())
76
- })
22
+ func (s * EventTargetTestSuite ) TestCancelable () {
23
+ s .Expect (s .mustEval (`
24
+ const target = new EventTarget();
25
+ target.addEventListener("custom", e => { e.preventDefault() });
26
+ target.dispatchEvent(new CustomEvent("custom"))
27
+ ` )).To (BeTrue (), "Event shouldn't be cancelable by default" )
77
28
78
- It ("Is an EventTarget" , func () {
79
- Expect (ctx .Eval ("(new EventTarget()) instanceof EventTarget" )).To (BeTrue ())
80
- })
29
+ s .Expect (s .mustEval (`
30
+ const target2 = new EventTarget();
31
+ target2.addEventListener("custom", e => { e.preventDefault() });
32
+ target2.dispatchEvent(new CustomEvent("custom", {cancelable: true }))
33
+ ` )).To (BeFalse ())
34
+ }
81
35
82
- It ("Can call an added event listener" , func () {
83
- Expect (ctx .Eval (`
84
- var callCount = 0
85
- function listener() { callCount++ };
86
- const target = new EventTarget();
87
- target.addEventListener('custom', listener);
88
- target.dispatchEvent(new CustomEvent('custom'));` )).Error ().ToNot (HaveOccurred ())
89
- Expect (ctx .Eval ("callCount" )).To (BeEquivalentTo (1 ))
90
- })
36
+ func (s * EventTargetTestSuite ) TestDOMEventBubbleNotSpecified () {
37
+ s .mustLoadHTML (`<div id="parent"><div id="target"></div></div>` )
38
+ s .mustRun (`
39
+ var targetCalled = false;
40
+ var parentCalled = false;
41
+ const target = document.getElementById("target")
42
+ target.addEventListener("go:home", e => { targetCalled = true });
43
+ document.getElementById("parent").addEventListener(
44
+ "go:home",
45
+ e => { parentCalled = true });
46
+ target.dispatchEvent(new CustomEvent("go:home", {}))
47
+ ` )
48
+ s .Expect (s .mustEval ("targetCalled" )).To (BeTrue (), "Target handler called" )
49
+ s .Expect (s .mustEval ("parentCalled" )).To (BeFalse (), "Parent handler called" )
50
+ }
91
51
92
- It ("Event from Go code will propagate to JS" , func () {
93
- Expect (ctx .Eval (`
94
- var callCount = 0
95
- function listener() { callCount++ };
96
- const target = window;
97
- target.addEventListener('custom', listener);
98
- ` )).Error ().ToNot (HaveOccurred ())
99
- ctx .Window .DispatchEvent (event .NewCustomEvent ("custom" , event.CustomEventInit {}))
100
- Expect (ctx .Eval ("callCount" )).To (BeEquivalentTo (1 ))
101
- })
52
+ func (s * EventTargetTestSuite ) TestDOMEventBubble () {
53
+ s .mustLoadHTML (`<div id="parent"><div id="target"></div></div>` )
54
+ s .mustRun (`
55
+ var targetCalled = false;
56
+ var parentCalled = false;
57
+ const target = document.getElementById("target")
58
+ target.addEventListener("go:home", e => { targetCalled = true });
59
+ document.getElementById("parent").addEventListener(
60
+ "go:home",
61
+ e => { parentCalled = true });
62
+ target.dispatchEvent(new CustomEvent("go:home", { bubbles: true }))
63
+ ` )
64
+ s .Assert ().Equal (true , s .mustEval ("targetCalled" ))
65
+ s .Assert ().Equal (true , s .mustEval ("parentCalled" ))
66
+ }
102
67
103
- Describe ("Events" , func () {
104
- Describe ("Custom events dispatched from Go-code" , func () {
105
- It ("Should be of type Event" , func () {
106
- Expect (ctx .Eval (`
107
- var event;
108
- window.addEventListener('custom', e => { event = e });` ,
109
- )).Error ().ToNot (HaveOccurred ())
110
- ctx .Window .DispatchEvent (
111
- event .NewCustomEvent ("custom" , event.CustomEventInit {}),
112
- )
113
- Expect (
114
- ctx .Eval (`Object.getPrototypeOf(event) === CustomEvent.prototype` ),
115
- ).To (BeTrue ())
116
- Expect (ctx .Eval (`event instanceof Event` )).To (BeTrue ())
117
- })
118
- })
68
+ func (s * EventTargetTestSuite ) TestCallingEventListener () {
69
+ s .mustRun (`
70
+ var callCount = 0
71
+ function listener() { callCount++ };
72
+ const target = new EventTarget();
73
+ target.addEventListener('custom', listener);
74
+ target.dispatchEvent(new CustomEvent('custom'));
75
+ ` )
76
+ s .Assert ().EqualValues (1 , s .mustEval ("callCount" ))
77
+ }
119
78
120
- It ("Should have a type" , func () {
121
- Expect (ctx .Eval (`
122
- var event;
123
- window.addEventListener('custom', e => { event = e });
124
- window.dispatchEvent(new CustomEvent('custom'));
125
- event.type` ,
126
- )).To (Equal ("custom" ))
127
- By ("Inheriting directly from event" )
128
- Expect (
129
- ctx .Eval (`Object.getPrototypeOf(event) === CustomEvent.prototype` ),
130
- ).To (BeTrue ())
131
- })
132
- })
133
- })
79
+ func (s * EventTargetTestSuite ) TestPropagateGoEventToJS () {
80
+ s .mustRun (`
81
+ var callCount = 0
82
+ var event;
83
+ function listener(e) { event = e; callCount++ };
84
+ const target = window;
85
+ target.addEventListener('custom', listener);
86
+ ` )
87
+ s .window .DispatchEvent (event .NewCustomEvent ("custom" , event.CustomEventInit {}))
88
+ s .Assert ().EqualValues (1 , s .mustEval ("callCount" ))
89
+ s .Assert ().Equal (true , s .mustEval (`Object.getPrototypeOf(event) === CustomEvent.prototype` ))
90
+ s .Assert ().Equal ("custom" , s .mustEval (`event.type` ), "type of actual event" )
134
91
}
0 commit comments