import React from 'react'; import { mount } from 'enzyme'; import { expect } from 'chai'; import { getActions, notCalledExcept } from '../../../test/aggrid-helper'; import BreadcrumbComponent from './breadcrumb'; describe('', function () { describe('#render', function () { const actions = getActions(); let component; let tabs; describe('empty path', function () { before(function (done) { component = mount( ); done(); }); it('renders the breadcrumb container', function () { const wrapper = component.find('.ag-header-breadcrumb-container'); expect(wrapper).to.be.present(); }); it('renders one tab with the collection name and home icon', function () { tabs = component.find('.ag-header-breadcrumb-tab'); expect(tabs).to.have.length(1); expect(tabs.text()).to.equal('compass-crud'); expect(tabs.find('.ag-header-breadcrumb-home-icon')).to.be.present(); }); }); describe('large path', function () { before(function (done) { component = mount( ); tabs = component.find('.ag-header-breadcrumb-tab'); expect(tabs).to.be.present(); done(); }); it('renders the first tab with the collection name and home icon', function () { const tab = tabs.at(0); expect(tab.text()).to.equal('compass-crud'); expect(tab.find('.ag-header-breadcrumb-home-icon')).to.be.present(); }); it('renders 2nd tab with the correct name and type', function () { const tab = tabs.at(1); expect(tab.text()).to.equal('a { }'); }); it('renders 3rd tab with the correct name and type', function () { const tab = tabs.at(2); expect(tab.text()).to.equal('b [ ]'); }); it('renders 4th tab with the correct name and type', function () { const tab = tabs.at(3); expect(tab.text()).to.equal('b.1 { }'); expect(tab.is('.ag-header-breadcrumb-tab-active')).to.equal(true); }); }); }); describe('#actions', function () { let component; let tabs; let actions; describe('clicking on the home button triggers correctly', function () { before(function (done) { actions = getActions(); component = mount( ); tabs = component.find('.ag-header-breadcrumb-tab'); expect(tabs).to.be.present(); tabs.at(0).simulate('click'); done(); }); it('triggers the pathChanged action', function () { expect(actions.pathChanged.callCount).to.equal(1); expect(actions.pathChanged.alwaysCalledWithExactly([], [])); notCalledExcept(actions, 'pathChanged'); }); }); describe('clicking on a tab triggers correctly', function () { before(function (done) { actions = getActions(); component = mount( ); tabs = component.find('.ag-header-breadcrumb-tab'); expect(tabs).to.be.present(); expect(tabs.at(1).text()).to.equal('a { }'); tabs.at(1).simulate('click'); done(); }); it('triggers the pathChanged action', function () { expect(actions.pathChanged.callCount).to.equal(1); expect(actions.pathChanged.alwaysCalledWithExactly(['a'], ['Object'])); notCalledExcept(actions, 'pathChanged'); }); }); }); });