"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const faker_1 = __importDefault(require("faker"));
const test_utilities_1 = require("../../test-utilities");
const Icon_1 = require("../Icon");
const Text_1 = require("../Text");
const Link_1 = require("../Link");
const Theme_1 = require("../Theme");
const Breadcrumbs_1 = require("./Breadcrumbs");
describe('<Breadcrumbs />', () => {
    it('does not render a separator after the final breadcrumb', () => {
        const baseBreadcrumbs = [
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content: faker_1.default.random.word(),
            },
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content: faker_1.default.random.word(),
            },
        ];
        const breadcrumbs = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs breadcrumbs={baseBreadcrumbs}/>);
        const [firstBreadcrumb, finalBreadcrumb] = breadcrumbs.findAll('li');
        expect(firstBreadcrumb).toContainReactComponent(Icon_1.Icon, {
            source: 'chevronRight',
        });
        expect(finalBreadcrumb).not.toContainReactComponent(Icon_1.Icon, {
            source: 'chevronRight',
        });
    });
    it('renders a Link for breadcrumbs that are neither active nor disabled', () => {
        const to = faker_1.default.internet.url();
        const content = faker_1.default.random.word();
        const withDefaultBreadcrumb = [
            {
                id: faker_1.default.random.uuid(),
                to,
                content,
            },
        ];
        const breadcrumbs = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs breadcrumbs={withDefaultBreadcrumb}/>);
        const [defaultBreadcrumb] = breadcrumbs.findAll('li');
        expect(defaultBreadcrumb).toContainReactComponent(Link_1.Link, { to });
        expect(defaultBreadcrumb).toContainReactText(content);
    });
    it('does not render a Link and sets the aria-current for active breadcrumb', () => {
        const id = faker_1.default.random.uuid();
        const content = faker_1.default.random.word();
        const withActiveBreadcrumb = [
            {
                id,
                to: faker_1.default.internet.url(),
                content,
            },
        ];
        const wrapper = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs active={id} breadcrumbs={withActiveBreadcrumb}/>);
        const [activeBreadcrumb] = wrapper.findAll('li');
        expect(activeBreadcrumb).toContainReactComponent(Text_1.Text, {
            children: [null, content],
            emphasized: true,
        });
        expect(activeBreadcrumb).toHaveReactProps({ 'aria-current': 'step' });
    });
    it('does not render Link if breadcrumb is disabled', () => {
        const content = faker_1.default.random.word();
        const withDisabledBreadcrumb = [
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content,
                disabled: true,
            },
        ];
        const wrapper = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs breadcrumbs={withDisabledBreadcrumb}/>);
        const [disabledBreadcrumb] = wrapper.findAll('li');
        expect(disabledBreadcrumb).toContainReactComponent(Text_1.Text, {
            children: [null, content],
        });
    });
    it('emphasizes active breadcrumbs', () => {
        const content = faker_1.default.random.word();
        const activeId = faker_1.default.random.uuid();
        const withActiveBreadcrumb = [
            {
                id: activeId,
                to: faker_1.default.internet.url(),
                content,
            },
        ];
        const wrapper = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs active={activeId} breadcrumbs={withActiveBreadcrumb}/>);
        const [activeBreadcrumb] = wrapper.findAll('li');
        expect(activeBreadcrumb).toContainReactComponent(Text_1.Text, {
            emphasized: true,
            children: [null, content],
        });
    });
    it('subdues disabled breadcrumbs', () => {
        const content = faker_1.default.random.word();
        const withDisabledBreadcrumb = [
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content,
                disabled: true,
            },
        ];
        const wrapper = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs breadcrumbs={withDisabledBreadcrumb}/>);
        const [disabledBreadcrumb] = wrapper.findAll('li');
        expect(disabledBreadcrumb).toContainReactComponent(Text_1.Text, {
            subdued: true,
            children: [null, content],
        });
    });
    it('numberStyle theme renders a marker', () => {
        const content = faker_1.default.random.word();
        const breadcrumbs = [
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content,
            },
            {
                id: faker_1.default.random.uuid(),
                to: faker_1.default.internet.url(),
                content,
            },
        ];
        const wrapper = test_utilities_1.mountWithContext(<Breadcrumbs_1.Breadcrumbs breadcrumbs={breadcrumbs}/>, { theme: Theme_1.createTheme({ buyerJourney: { numberStyle: 'decimalLeadingZero' } }) });
        wrapper.findAll('li').forEach((breadcrumb, index) => {
            expect(breadcrumb).toContainReactComponent(Breadcrumbs_1.Marker, {
                children: `0${index + 1}`,
            });
        });
    });
});
