1cca7abcab
This is extracted from #8094, where I have run into some snags. Since these ESLint fixes aren’t actually connected to the Ember 3.16 update but involve changes to many files, we might as well address them separately. Where possible I fixed the problems but in cases where a fix seemed too involved, I added per-line or -file exceptions.
89 lines
2.5 KiB
JavaScript
89 lines
2.5 KiB
JavaScript
import Service from '@ember/service';
|
|
import RSVP from 'rsvp';
|
|
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'ember-qunit';
|
|
import { findAll, render, settled } from '@ember/test-helpers';
|
|
import hbs from 'htmlbars-inline-precompile';
|
|
import PromiseObject from 'nomad-ui/utils/classes/promise-object';
|
|
|
|
module('Integration | Component | app breadcrumbs', function(hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
hooks.beforeEach(function() {
|
|
const mockBreadcrumbs = Service.extend({
|
|
init() {
|
|
this._super(...arguments);
|
|
this.breadcrumbs = [];
|
|
},
|
|
});
|
|
|
|
this.owner.register('service:breadcrumbs', mockBreadcrumbs);
|
|
this.breadcrumbs = this.owner.lookup('service:breadcrumbs');
|
|
});
|
|
|
|
const commonCrumbs = [{ label: 'One', args: ['one'] }, { label: 'Two', args: ['two'] }];
|
|
|
|
const template = hbs`
|
|
<AppBreadcrumbs />
|
|
`;
|
|
|
|
test('breadcrumbs comes from the breadcrumbs service', async function(assert) {
|
|
this.breadcrumbs.set('breadcrumbs', commonCrumbs);
|
|
|
|
await render(template);
|
|
|
|
assert.equal(
|
|
findAll('[data-test-breadcrumb]').length,
|
|
commonCrumbs.length,
|
|
'The number of crumbs matches the crumbs from the service'
|
|
);
|
|
});
|
|
|
|
test('every breadcrumb is rendered correctly', async function(assert) {
|
|
this.breadcrumbs.set('breadcrumbs', commonCrumbs);
|
|
|
|
await render(template);
|
|
|
|
const renderedCrumbs = findAll('[data-test-breadcrumb]');
|
|
|
|
renderedCrumbs.forEach((crumb, index) => {
|
|
assert.equal(
|
|
crumb.textContent.trim(),
|
|
commonCrumbs[index].label,
|
|
`Crumb ${index} is ${commonCrumbs[index].label}`
|
|
);
|
|
});
|
|
});
|
|
|
|
test('when breadcrumbs are pending promises, an ellipsis is rendered', async function(assert) {
|
|
let resolvePromise;
|
|
const promise = new RSVP.Promise(resolve => {
|
|
resolvePromise = resolve;
|
|
});
|
|
|
|
this.breadcrumbs.set('breadcrumbs', [
|
|
{ label: 'One', args: ['one'] },
|
|
PromiseObject.create({ promise }),
|
|
{ label: 'Three', args: ['three'] },
|
|
]);
|
|
|
|
await render(template);
|
|
|
|
assert.equal(
|
|
findAll('[data-test-breadcrumb]')[1].textContent.trim(),
|
|
'…',
|
|
'Promise breadcrumb is in a loading state'
|
|
);
|
|
|
|
resolvePromise({ label: 'Two', args: ['two'] });
|
|
|
|
return settled().then(() => {
|
|
assert.equal(
|
|
findAll('[data-test-breadcrumb]')[1].textContent.trim(),
|
|
'Two',
|
|
'Promise breadcrumb has resolved and now renders Two'
|
|
);
|
|
});
|
|
});
|
|
});
|