87ab332bce
This commit adds 2 ember component/helpers and a service to contain the shared functionality for matching/rendering content dependent on state identifiers. Currently a `service.state` method has been added to easily make manual state objects, but these are built towards using `xstate` to manage UI state in some of our future components. We've added some tests here, and we aren't currently using these components anywhere in this commit.
33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'ember-qunit';
|
|
import { render } from '@ember/test-helpers';
|
|
import { hbs } from 'ember-cli-htmlbars';
|
|
|
|
module('Integration | Helper | state-matches', function(hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
// Replace this with your real tests.
|
|
test('it returns true/false when the state or state in an array matches', async function(assert) {
|
|
this.set('state', {
|
|
matches: function(id) {
|
|
return id === 'idle';
|
|
},
|
|
});
|
|
|
|
await render(hbs`{{state-matches state 'idle'}}`);
|
|
assert.equal(this.element.textContent.trim(), 'true');
|
|
|
|
await render(hbs`{{state-matches state 'loading'}}`);
|
|
assert.equal(this.element.textContent.trim(), 'false');
|
|
|
|
await render(hbs`{{state-matches state (array 'idle' 'loading')}}`);
|
|
assert.equal(this.element.textContent.trim(), 'true');
|
|
|
|
await render(hbs`{{state-matches state (array 'loading' 'idle')}}`);
|
|
assert.equal(this.element.textContent.trim(), 'true');
|
|
|
|
await render(hbs`{{state-matches state (array 'loading' 'deleting')}}`);
|
|
assert.equal(this.element.textContent.trim(), 'false');
|
|
});
|
|
});
|