import { run } from '@ember/runloop'; import Service from '@ember/service'; import { resolve } from 'rsvp'; import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { render, click } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; let response = { progress: 1, required: 3, complete: false, }; let adapter = { foo() { return resolve(response); }, }; const storeStub = Service.extend({ adapterFor() { return adapter; }, }); module('Integration | Component | shamir flow', function (hooks) { setupRenderingTest(hooks); hooks.beforeEach(function () { this.foo = function () {}; run(() => { this.owner.unregister('service:store'); this.owner.register('service:store', storeStub); this.storeService = this.owner.lookup('service:store'); }); }); test('it renders', async function (assert) { await render(hbs``); assert.dom('form [data-test-form-text]').hasText('like whoa', 'renders formText inline'); await render(hbs`

whoa again

`); assert.dom('.shamir-progress').doesNotExist('renders no progress bar for no progress'); assert.dom('form [data-test-form-text]').hasText('whoa again', 'renders the block, not formText'); await render(hbs` `); assert.dom('.shamir-progress').hasText('1/5 keys provided', 'displays textual progress'); this.set('errors', ['first error', 'this is fine']); await render(hbs` `); assert.dom('.message.is-danger').exists({ count: 2 }, 'renders errors'); }); test('it sends data to the passed action', async function (assert) { this.set('key', 'foo'); await render(hbs` `); await click('[data-test-shamir-submit]'); assert .dom('.shamir-progress') .hasText(`${response.progress}/${response.required} keys provided`, 'displays the correct progress'); }); test('it checks onComplete to call onShamirSuccess', async function (assert) { assert.expect(2); this.set('key', 'foo'); this.set('onSuccess', function () { assert.ok(true, 'onShamirSuccess called'); }); this.set('checkComplete', function () { assert.ok(true, 'onComplete called'); // return true so we trigger success call return true; }); await render(hbs` `); await click('[data-test-shamir-submit]'); }); test('it fetches progress on init when fetchOnInit is true', async function (assert) { await render(hbs` `); assert .dom('.shamir-progress') .hasText(`${response.progress}/${response.required} keys provided`, 'displays the correct progress'); }); });