Skip to content

Instantly share code, notes, and snippets.

@chriskrycho
Created January 31, 2021 18:02
Show Gist options
  • Save chriskrycho/ebd560e13ee6d35682ea9a155b9a0804 to your computer and use it in GitHub Desktop.
Save chriskrycho/ebd560e13ee6d35682ea9a155b9a0804 to your computer and use it in GitHub Desktop.
Stepping through promise execution
function deferred() {
let deferred = { resolve: undefined, reject: undefined, promise: undefined };
deferred.promise = new Promise((resolve, reject) => {
deferred.resolve = resolve;
deferred.reject = reject;
});
return deferred;
}
function testInitial() {
let { resolve, reject, promise } = deferred();
await render(hbs`<Loadable @data={{promise}} />`);
expect(find('[data-test-loading]')).to.be.defined();
expect(find('[data-test-loaded]')).not.to.be.defined();
expect(find('[data-test-error]')).not.to.be.defined();
}
function testResolved() {
let { resolve, reject, promise } = deferred();
await render(hbs`<Loadable @data={{promise}} />`);
resolve('cool');
await promise;
expect(find('[data-test-loading]')).not.to.be.defined();
expect(find('[data-test-loaded]')).to.be.defined();
expect(find('[data-test-loaded-value]')).to.equal('cool');
expect(find('[data-test-error]')).not.to.be.defined();
}
function testResolved() {
let { resolve, reject, promise } = deferred();
await render(hbs`<Loadable @data={{promise}} />`);
reject('yikes');
await promise;
expect(find('[data-test-loading]')).not.to.be.defined();
expect(find('[data-test-loaded]')).to.be.defined();
expect(find('[data-test-error]')).not.to.be.defined();
expect(find('[data-test-error-reason]')).to.equal('yikes');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment