aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/templates/page/page.test.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-11-20 12:27:46 +0100
committerArmand Philippot <git@armandphilippot.com>2023-11-20 19:32:09 +0100
commit70b4f633a6fbedb58c8b9134ac64ede854d489de (patch)
treec757bb12ad9a588e23b25cdb8b46710ac14dbcb1 /src/components/templates/page/page.test.tsx
parent9a481f066e1427d53a06cf7aeec525a745abf03f (diff)
refactor(components): replace PageLayout template with Page
* split pages in smaller components (it is both easier to maintain and more readable, we avoid the use of fragments in pages directory) * extract breadcrumbs from article tag (the navigation is not related to the page contents) * remove useReadingTime hook * remove layout options except `isHome`
Diffstat (limited to 'src/components/templates/page/page.test.tsx')
-rw-r--r--src/components/templates/page/page.test.tsx49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/components/templates/page/page.test.tsx b/src/components/templates/page/page.test.tsx
new file mode 100644
index 0000000..21c5a86
--- /dev/null
+++ b/src/components/templates/page/page.test.tsx
@@ -0,0 +1,49 @@
+import { describe, expect, it } from '@jest/globals';
+import { render, screen as rtlScreen } from '../../../../tests/utils';
+import type { BreadcrumbsItem } from '../../organisms';
+import { Page } from './page';
+import { PageBody } from './page-body';
+
+describe('Page', () => {
+ it('renders its children', () => {
+ const body =
+ 'Consequatur deleniti eligendi quidem sint et nobis ut qui. Dolores modi eos. Cupiditate aliquid sunt consequatur voluptatem laudantium.';
+
+ render(
+ <Page>
+ <PageBody>{body}</PageBody>
+ </Page>
+ );
+
+ expect(rtlScreen.getByText(body)).toBeInTheDocument();
+ });
+
+ it('can render the breadcrumbs', () => {
+ const body =
+ 'Consequatur deleniti eligendi quidem sint et nobis ut qui. Dolores modi eos. Cupiditate aliquid sunt consequatur voluptatem laudantium.';
+ const breadcrumbs = [
+ { id: 'home', name: 'Home', url: '#home' },
+ { id: 'blog', name: 'Blog', url: '#blog' },
+ ] satisfies BreadcrumbsItem[];
+
+ render(
+ <Page breadcrumbs={breadcrumbs}>
+ <PageBody>{body}</PageBody>
+ </Page>
+ );
+
+ expect(rtlScreen.getByRole('navigation')).toHaveAccessibleName(
+ 'Breadcrumbs'
+ );
+ expect(rtlScreen.getAllByRole('listitem')).toHaveLength(breadcrumbs.length);
+ });
+
+ it('can have a class modifier based on a prop', () => {
+ const body =
+ 'Consequatur deleniti eligendi quidem sint et nobis ut qui. Dolores modi eos. Cupiditate aliquid sunt consequatur voluptatem laudantium.';
+
+ render(<Page isBodyLastChild>{body}</Page>);
+
+ expect(rtlScreen.getByText(body)).toHaveClass('page--body-last');
+ });
+});