diff --git a/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss index c07156279..e7ac5572e 100644 --- a/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss +++ b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss @@ -11,6 +11,7 @@ color: var(--color); text-decoration: none; cursor: pointer; + display: inline-flex; &:hover { --color: var(--action); diff --git a/ui/core/app/controllers/.gitkeep b/ui/core/app/controllers/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/ui/core/tests/acceptance/host-catalogs-test.js b/ui/core/tests/acceptance/host-catalogs-test.js index acdacafa7..e07e85046 100644 --- a/ui/core/tests/acceptance/host-catalogs-test.js +++ b/ui/core/tests/acceptance/host-catalogs-test.js @@ -1,5 +1,5 @@ import { module, test } from 'qunit'; -import { visit, currentURL, click, fillIn, find } from '@ember/test-helpers'; +import { visit, currentURL, click, fillIn, find, findAll } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; @@ -10,12 +10,29 @@ module('Acceptance | host catalogs', function(hooks) { setupMirage(hooks); test('visiting host catalogs', async function (assert) { - assert.expect(1); + assert.expect(5); this.server.createList('project', 1); this.server.createList('host-catalog', 1); await visit('/orgs/1/projects/1/host-catalogs'); await a11yAudit(); assert.equal(currentURL(), '/orgs/1/projects/1/host-catalogs'); + + assert.equal(findAll('.rose-layout-page-breadcrumbs a').length, 3); + assert.equal( + findAll('.rose-layout-page-breadcrumbs a')[0].textContent.trim(), + 'Projects', + 'Displays project breadcrumb' + ); + assert.equal( + findAll('.rose-layout-page-breadcrumbs a')[1].textContent.trim(), + this.server.db.projects[0].name, + 'Displays project name breadcrumb' + ); + assert.equal( + findAll('.rose-layout-page-breadcrumbs a')[2].textContent.trim(), + 'Host Catalogs', + 'Displays hostcatalog breadcrumb' + ); }); test('can navigate to host catalog form', async function(assert) { diff --git a/ui/core/tests/acceptance/projects-test.js b/ui/core/tests/acceptance/projects-test.js index 612da5ffb..832ce0529 100644 --- a/ui/core/tests/acceptance/projects-test.js +++ b/ui/core/tests/acceptance/projects-test.js @@ -10,11 +10,16 @@ module('Acceptance | projects', function (hooks) { setupMirage(hooks); test('visiting projects', async function (assert) { - assert.expect(1); + assert.expect(2); this.server.createList('project', 1); await visit('/orgs/1/projects'); await a11yAudit(); assert.equal(currentURL(), '/orgs/1/projects'); + assert.equal( + find('.rose-layout-page-breadcrumbs').textContent.trim(), + 'Projects', + 'Displays breadcrumbs' + ); }); test('saving a new project with invalid fields displays error messages', async function (assert) { diff --git a/ui/core/tests/integration/components/bread-crumbs-test.js b/ui/core/tests/integration/components/bread-crumbs-test.js index 47ba10bba..7ecb5ac86 100644 --- a/ui/core/tests/integration/components/bread-crumbs-test.js +++ b/ui/core/tests/integration/components/bread-crumbs-test.js @@ -1,13 +1,42 @@ import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; -//import { render } from '@ember/test-helpers'; -//import { hbs } from 'ember-cli-htmlbars'; +import { render, find, findAll } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; module('Integration | Component | bread-crumbs', function(hooks) { setupRenderingTest(hooks); - // TODO: need bread crumbs tests test('it renders', async function(assert) { - assert.ok(true); + this.set('breadCrumbs', [{label: 'Level 1'}]); + + await render(hbs``); + assert.equal(find('.rose-nav-breadcrumbs').textContent.trim(), 'Level 1'); + }); + + test('it renders with model', async function(assert) { + this.set('breadCrumbs', [{ + label: 'Level 2', + path: 'orgs.org.projects.project', + model: {project_id: 'project'}} + ]); + + await render(hbs``); + assert.equal(find('.rose-nav-breadcrumbs').textContent.trim(), 'Level 2'); + }); + + test('it renders multiple breadCrumbs', async function(assert) { + this.set('breadCrumbs', [{ + label: 'Level 1' + },{ + label: 'Level 2' + }, { + label: 'Level 3' + }]); + + await render(hbs``); + assert.equal(findAll('a').length, 3); + assert.equal(findAll('a')[0].textContent.trim(), 'Level 1'); + assert.equal(findAll('a')[1].textContent.trim(), 'Level 2'); + assert.equal(findAll('a')[2].textContent.trim(), 'Level 3'); }); });