/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ /* eslint-disable ember-a11y-testing/a11y-audit-called */ import { setComponentTemplate } from '@ember/component'; import templateOnlyComponent from '@ember/component/template-only'; import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { findAll, render } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; module('Integration | Component | app breadcrumbs', function (hooks) { setupRenderingTest(hooks); const commonCrumbs = [ { label: 'Jobs', args: ['jobs.index'] }, { label: 'Job', args: ['jobs.job.index'] }, ]; test('every breadcrumb is rendered correctly', async function (assert) { assert.expect(3); this.set('commonCrumbs', commonCrumbs); await render(hbs` {{#each this.commonCrumbs as |crumb|}} {{/each}} `); assert .dom('[data-test-breadcrumb-default]') .exists( 'We register the default breadcrumb component if no type is specified on the crumb' ); 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 we register a crumb with a type property, a dedicated breadcrumb/ component renders', async function (assert) { const crumbs = [ { label: 'Jobs', args: ['jobs.index'] }, { type: 'special', label: 'Job', args: ['jobs.job.index'] }, ]; this.set('crumbs', crumbs); this.owner.register( 'component:breadcrumbs/special', setComponentTemplate( hbs`
Test
`, templateOnlyComponent() ) ); await render(hbs` {{#each this.crumbs as |crumb|}} {{/each}} `); assert .dom('[data-test-breadcrumb-special]') .exists( 'We can create a new type of breadcrumb component and AppBreadcrumbs will handle rendering by type' ); assert .dom('[data-test-breadcrumb-default]') .exists('Default breadcrumb registers if no type is specified'); }); });