- pubsub is a basic pubsub impl - autoredraw is glue code to register callback to pubsub and onevent moved e.redraw to autoredraw
63 lines
No EOL
1.3 KiB
JavaScript
63 lines
No EOL
1.3 KiB
JavaScript
"use strict"
|
|
|
|
var o = require("../../ospec/ospec")
|
|
var domMock = require("../../test-utils/domMock")
|
|
|
|
var coreRenderer = require("../../render/render")
|
|
var apiPubSub = require("../../api/pubsub")
|
|
var autoredraw = require("../../api/autoredraw")
|
|
|
|
o.spec("autoredraw", function() {
|
|
var FRAME_BUDGET = Math.floor(1000 / 60)
|
|
var $window, root, renderer, pubsub, spy
|
|
o.beforeEach(function() {
|
|
$window = domMock()
|
|
root = $window.document.body
|
|
renderer = coreRenderer($window)
|
|
pubsub = apiPubSub()
|
|
spy = o.spy()
|
|
})
|
|
|
|
o("returns self-trigger", function() {
|
|
var run = autoredraw(root, renderer, pubsub, spy)
|
|
|
|
run()
|
|
|
|
o(spy.callCount).equals(1)
|
|
})
|
|
|
|
o("registers onevent", function() {
|
|
autoredraw(root, renderer, pubsub, spy)
|
|
|
|
renderer.render(root, {tag: "div", attrs: {onclick: function() {}}})
|
|
|
|
var e = $window.document.createEvent("MouseEvents")
|
|
e.initEvent("click", true, true)
|
|
root.firstChild.dispatchEvent(e)
|
|
|
|
o(spy.callCount).equals(1)
|
|
})
|
|
|
|
o("registers pubsub", function() {
|
|
autoredraw(root, renderer, pubsub, spy)
|
|
|
|
pubsub.publish()
|
|
|
|
o(spy.callCount).equals(1)
|
|
})
|
|
o("throttles", function(done) {
|
|
var run = autoredraw(root, renderer, pubsub, spy)
|
|
|
|
run()
|
|
run()
|
|
|
|
o(spy.callCount).equals(1)
|
|
|
|
setTimeout(function() {
|
|
o(spy.callCount).equals(2)
|
|
|
|
done()
|
|
}, FRAME_BUDGET)
|
|
})
|
|
|
|
}) |