@octopusdeploy/design-system-components
Version:
The design systems component library.
41 lines (40 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("@testing-library/react");
const vitest_1 = require("vitest");
const PageTitleProvider_1 = require("../PageTitleProvider");
(0, vitest_1.describe)("PageTitleProvider", () => {
(0, vitest_1.it)("sets the page title using the primary and secondary segments", () => {
const result = renderPageTitleProvider({ pageTitlePrimarySegment: "Primary", pageTitleSecondarySegment: "Secondary" });
result.assertPageTitle("Primary - Secondary - Octopus Deploy");
});
(0, vitest_1.it)("sets the page title using just the primary segment", () => {
const result = renderPageTitleProvider({ pageTitlePrimarySegment: "Primary", pageTitleSecondarySegment: undefined });
result.assertPageTitle("Primary - Octopus Deploy");
});
(0, vitest_1.it)("sets the page title using just the secondary segment", () => {
const result = renderPageTitleProvider({ pageTitlePrimarySegment: undefined, pageTitleSecondarySegment: "Secondary" });
result.assertPageTitle("Secondary - Octopus Deploy");
});
(0, vitest_1.it)("updates the page title when the segments change", () => {
const result = renderPageTitleProvider({ pageTitlePrimarySegment: "My Project", pageTitleSecondarySegment: "Deployments" });
result.rerender({ pageTitlePrimarySegment: "My Project", pageTitleSecondarySegment: "Releases" });
result.assertPageTitle("My Project - Releases - Octopus Deploy");
});
});
function renderPageTitleProvider(renderOptions) {
const getUiWithRenderOptions = (renderOptions) => ((0, jsx_runtime_1.jsx)(PageTitleProvider_1.PageTitleProvider, { children: (0, jsx_runtime_1.jsx)(TestPageTitleSetter, { pageTitlePrimarySegment: renderOptions?.pageTitlePrimarySegment, pageTitleSecondarySegment: renderOptions?.pageTitleSecondarySegment }) }));
const { rerender } = (0, react_1.render)(getUiWithRenderOptions(renderOptions));
return {
rerender: (renderOptions) => rerender(getUiWithRenderOptions(renderOptions)),
assertPageTitle: (pageTitle) => {
(0, vitest_1.expect)(document.title).toBe(pageTitle);
},
};
}
function TestPageTitleSetter({ pageTitlePrimarySegment, pageTitleSecondarySegment }) {
(0, PageTitleProvider_1.useSetPageTitlePrimarySegmentEffect)(pageTitlePrimarySegment);
(0, PageTitleProvider_1.useSetPageTitleSecondarySegmentEffect)(pageTitleSecondarySegment);
return null;
}