Skip to content

Commit 1a677cd

Browse files
committed
test: Convert scripttest tests
Convert ginkgo tests to testify suites
1 parent 6945725 commit 1a677cd

File tree

4 files changed

+76
-123
lines changed

4 files changed

+76
-123
lines changed

internal/test/scripttests/event_target_test_suite.go

+75-118
Original file line numberDiff line numberDiff line change
@@ -2,133 +2,90 @@ package scripttests
22

33
import (
44
"github.com/gost-dom/browser/dom/event"
5-
. "github.com/onsi/ginkgo/v2"
5+
"github.com/gost-dom/browser/html"
66
. "github.com/onsi/gomega"
77
)
88

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+
}
3112

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+
}
3916

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+
}
5821

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")
7728

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+
}
8135

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+
}
9151

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+
}
10267

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+
}
11978

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")
13491
}

internal/test/scripttests/script_test_suite.go

-4
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,3 @@ func (suite *ScriptTestSuite) LoadHTML(h string) *ScriptTestContext {
7777
func (suite *ScriptTestSuite) NewWindow() html.Window {
7878
return suite.NewContext().Window
7979
}
80-
81-
func (suite *ScriptTestSuite) CreateAllGinkgoTests() {
82-
suite.CreateEventTargetTests()
83-
}

internal/test/scripttests/suites.go

+1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ func RunSuites(t *testing.T, h html.ScriptHost) {
1717
t.Run("Window", runSuite(NewWindowTestSuite(h)))
1818
t.Run("UIEvents", runSuite(NewUIEventTestSuite(h)))
1919
t.Run("Document", runSuite(NewDocumentSuite(h)))
20+
t.Run("EventTarget", runSuite(NewEventTargetTestSuite(h)))
2021
}

scripting/v8host/scripting_suite_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ func init() {
4242

4343
host = New()
4444
scriptTestSuite = scripttests.NewScriptTestSuite(host, "v8")
45-
scriptTestSuite.CreateAllGinkgoTests()
4645

4746
BeforeSuite(func() {
4847
})

0 commit comments

Comments
 (0)