Skip to content

Commit a239c77

Browse files
kfuledead-claudia
authored andcommitted
Add assertion of whether an event listener has been called
This makes it clear that the event listener is being called but redraw is not being called.
1 parent df1e407 commit a239c77

File tree

1 file changed

+53
-5
lines changed

1 file changed

+53
-5
lines changed

render/tests/test-event.js

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -772,46 +772,66 @@ o.spec("event", function() {
772772
})
773773
})
774774
o("async function (event.redraw = false)", function(done) {
775+
var spy = o.spy()
775776
var div = m("div", {onclick: async function (ev) {
776777
// set event.redraw = false to prevent redraws
777778
ev.redraw = false
779+
spy()
778780
}})
779781
var e = $window.document.createEvent("MouseEvents")
780782
e.initEvent("click", true, true)
781783

782784
render(root, div)
785+
786+
// event listener has not yet been called
787+
o(spy.callCount).equals(0)
788+
783789
div.dom.dispatchEvent(e)
784790

791+
// event listener called but not redraw
792+
o(spy.callCount).equals(1)
785793
o(redraw.callCount).equals(0)
786794

787795
callAsync(function() {
796+
o(spy.callCount).equals(1)
788797
o(redraw.callCount).equals(0)
789798

790799
done()
791800
})
792801
})
793802
o("async function (event.redraw = false, await Promise)", function(done) {
794803
var thenCB
804+
var spy = o.spy(function(resolve){thenCB = resolve})
795805
var div = m("div", {onclick: async function (ev) {
796806
// set event.redraw = false to prevent redraws
797807
ev.redraw = false
798-
await new Promise(function(resolve){thenCB = resolve})
808+
await new Promise(spy)
799809
}})
800810
var e = $window.document.createEvent("MouseEvents")
801811
e.initEvent("click", true, true)
802812

803813
render(root, div)
814+
815+
// event listener has not yet been called
816+
o(spy.callCount).equals(0)
817+
o(thenCB).equals(undefined)
818+
804819
div.dom.dispatchEvent(e)
805820

821+
// event listener called but not redraw
822+
o(spy.callCount).equals(1)
823+
o(thenCB).notEquals(undefined)
806824
o(redraw.callCount).equals(0)
807825

808826
callAsync(function() {
809827
// not resolved yet
828+
o(spy.callCount).equals(1)
810829
o(redraw.callCount).equals(0)
811830

812831
// resolve
813832
thenCB()
814833
callAsync(function() {
834+
o(spy.callCount).equals(1)
815835
o(redraw.callCount).equals(0)
816836

817837
done()
@@ -850,28 +870,38 @@ o.spec("event", function() {
850870
})
851871
o("async function (event.redraw = false, await Promise, event.redraw = true)", function(done) {
852872
var thenCB
873+
var spy = o.spy(function(resolve){thenCB = resolve})
853874
var div = m("div", {onclick: async function (ev) {
854875
// set event.redraw = false to prevent sync redraw
855876
ev.redraw = false
856-
await new Promise(function(resolve){thenCB = resolve})
877+
await new Promise(spy)
857878
// set event.redraw = true to enable async redraw
858879
ev.redraw = true
859880
}})
860881
var e = $window.document.createEvent("MouseEvents")
861882
e.initEvent("click", true, true)
862883

863884
render(root, div)
885+
886+
// event listener has not yet been called
887+
o(spy.callCount).equals(0)
888+
o(thenCB).equals(undefined)
889+
864890
div.dom.dispatchEvent(e)
865891

892+
// event listener called but not redraw
893+
o(spy.callCount).equals(1)
894+
o(thenCB).notEquals(undefined)
866895
o(redraw.callCount).equals(0)
867-
868896
callAsync(function() {
869897
// not resolved yet
898+
o(spy.callCount).equals(1)
870899
o(redraw.callCount).equals(0)
871900

872901
// resolve
873902
thenCB()
874903
callAsync(function() {
904+
o(spy.callCount).equals(1)
875905
o(redraw.callCount).equals(1)
876906
o(redraw.this).equals(undefined)
877907
o(redraw.args.length).equals(0)
@@ -917,35 +947,52 @@ o.spec("event", function() {
917947
})
918948
})
919949
o("avoid sync redraw after removal", function() {
920-
var div = m("div", {onclick: function () {}})
950+
var spy = o.spy()
951+
var div = m("div", {onclick: spy})
921952
var e = $window.document.createEvent("MouseEvents")
922953
e.initEvent("click", true, true)
923954

924955
render(root, div)
925956
// remove div
926957
render(root, [])
927958

959+
// event listener has not yet been called
960+
o(spy.callCount).equals(0)
961+
928962
div.dom.dispatchEvent(e)
929963

964+
// event listener called but not redraw
965+
o(spy.callCount).equals(1)
930966
o(redraw.callCount).equals(0)
931967
})
932968
o("avoid async redraw after removal", function(done) {
933969
var thenCB
970+
var spy = o.spy(function(resolve){thenCB = resolve})
934971
var div = m("div", {onclick: async function () {
935-
await new Promise(function(resolve){thenCB = resolve})
972+
await new Promise(spy)
936973
}})
937974
var e = $window.document.createEvent("MouseEvents")
938975
e.initEvent("click", true, true)
939976

940977
render(root, div)
978+
979+
// event listener has not yet been called
980+
o(spy.callCount).equals(0)
981+
o(thenCB).equals(undefined)
982+
941983
div.dom.dispatchEvent(e)
942984

985+
// event listener called
986+
o(spy.callCount).equals(1)
987+
o(thenCB).notEquals(undefined)
988+
943989
o(redraw.callCount).equals(1)
944990
o(redraw.this).equals(undefined)
945991
o(redraw.args.length).equals(0)
946992

947993
callAsync(function() {
948994
// not resolved yet
995+
o(spy.callCount).equals(1)
949996
o(redraw.callCount).equals(1)
950997

951998
// remove div
@@ -954,6 +1001,7 @@ o.spec("event", function() {
9541001
// resolve
9551002
thenCB()
9561003
callAsync(function() {
1004+
o(spy.callCount).equals(1)
9571005
o(redraw.callCount).equals(1)
9581006

9591007
done()

0 commit comments

Comments
 (0)