backburner.js
backburner.js copied to clipboard
Missing test cases.
I did a quick skim of our test coverage and noticed a few holes where we need some coverage:
bb.deferis untested (yes, it is deprecated, but it should still have a test given that it is public API)- Error conditions in
bb.onandbb.offare not tested (passing no eventName, or passing no callback) end called without beginerror thrown inbb.end()is not tested- invoking
bb.later()e.g. with no arguments. This should be an error IMHO, but currently just returns early bb.ensureInstance()is public API that has no testsbb.join(function() { })(no target or args) when within a run-loop (e.g. when we are actually joining an existing loop) has no testsbb.join(function() { }, someArg)(no target with args) when within a run-loop (e.g. when we are actually joining an existing loop) has no tests} else { end = middle; }inbinary-searchhas no testsQueue.prototype.flushwith a custombefore/afterhas no tests
I hope this is an OK place to put this, but perhaps an additional test might be needed for bb.join with no method:
// This is a stack trace from an Ember app where an async component action is being run, and the route is navigated away to another page during that time. I'm pretty sure there is no problem with the app code.
Uncaught (in promise) TypeError: Cannot read property 'apply' of undefined
at Backburner._join (backburner.js:995)
at Backburner.join (backburner.js:760)
at Function.join (index.js:168)
at Proxy.routeAction (route-action.js:53)
at invokeAction (invoke-action.js:13)
at runSearch (search.js:98)
at SelectBox.search (index.js:327)
at index.js:249
// backburner.js
_join(target, method, args) {
if (this.currentInstance === null) {
return this._run(target, method, args);
}
if (target === undefined && args === undefined) {
return method();
} else {
return method.apply(target, args); // `method` is undefined
}
}
Ya, sounds good thanks @amk221!