Anvil/stories/pages/Profile.stories.ts
André Jaenisch be727a6d9c
chore: update dependencies
Turns out most Storybook Addons expect React and won't be installable in
a Svelte(Kit) project. But I could figure out how to use the play
functions. So I have an example for it.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-30 12:55:35 +02:00

53 lines
1.8 KiB
TypeScript

/* Stories for Profile page.
* Copyright (C) 2024 André Jaenisch
* SPDX-FileCopyrightText: 2024 André Jaenisch
* SPDX-License-Identifier: AGPL-3.0-or-later
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import type { Meta, StoryObj } from '@storybook/svelte';
import { within, userEvent, expect, fn } from '@storybook/test';
import Profile from '$lib/components/pages/Profile.svelte';
const meta = {
title: 'Pages/Profile',
component: Profile,
tags: ['autodocs'],
argTypes: {
data: { controls: 'object' }
}
} satisfies Meta<Profile>;
export default meta;
type Story = StoryObj<typeof meta>;
export const Plain: Story = {
args: {
data: {
user: {
avatar: '',
created_at: new Date(),
created_at_formatted: (function () {
const locale = 'en-US';
return new Intl.DateTimeFormat(locale).format(new Date());
})(),
created_with: 'Anvil',
display_name: 'Jane Doe',
instance: 'domain.example',
pronoun: 'she/her',
username: 'jane_doe'
}
}
},
play: async ({ args, canvasElement }) => {
const canvas = within(canvasElement);
await userEvent.click(canvas.getByRole('button', { name: 'Menu' }));
expect(true).toBe(true);
}
};