From 9849aab40283cbde2184e74d4795aec8ef8ccba3 Mon Sep 17 00:00:00 2001
From: zyoshoka <107108195+zyoshoka@users.noreply.github.com>
Date: Sat, 8 Jun 2024 18:00:54 +0900
Subject: test(#10336): add `components/MkC.*` stories (#13830)
* test(storybook): add `components/MkC.*` stories
* test(storybook): add some tests
* test: add sleep
* test: comment-out flaky test
* test(storybook): add test for `MkChannelFollowButton`
* chore(storybook): tweak sleep duration in `MkChannelFollowButton` story test
* fix(chromatic): add delay to `MkChannelList`
* chore: replace `mswDecorator` with `mswLoader`
* fix(storybook): tweak some parameters
* chore: serve static files
* fix(chromatic): add delay to `MkCwButton`
* chore: delete logging for debug
* fix: add right click in `MkContextMenu` play
* refactor: remove unused imports
---
.../MkChannelFollowButton.stories.impl.ts | 77 ++++++++++++++
.../src/components/MkChannelFollowButton.vue | 5 +-
.../src/components/MkChannelList.stories.impl.ts | 65 ++++++++++++
.../components/MkChannelPreview.stories.impl.ts | 43 ++++++++
.../src/components/MkChart.stories.impl.ts | 117 +++++++++++++++++++++
packages/frontend/src/components/MkChart.vue | 90 +++++++++-------
.../src/components/MkChartLegend.stories.impl.ts | 7 ++
.../src/components/MkChartTooltip.stories.impl.ts | 7 ++
.../src/components/MkClickerGame.stories.impl.ts | 79 ++++++++++++++
packages/frontend/src/components/MkClickerGame.vue | 2 +-
.../src/components/MkClipPreview.stories.impl.ts | 43 ++++++++
.../src/components/MkCode.core.stories.impl.ts | 7 ++
.../frontend/src/components/MkCode.stories.impl.ts | 44 ++++++++
.../src/components/MkCodeEditor.stories.impl.ts | 62 +++++++++++
.../src/components/MkCodeInline.stories.impl.ts | 37 +++++++
.../src/components/MkColorInput.stories.impl.ts | 50 +++++++++
.../src/components/MkContainer.stories.impl.ts | 7 ++
.../src/components/MkContextMenu.stories.impl.ts | 58 ++++++++++
.../src/components/MkCropperDialog.stories.impl.ts | 75 +++++++++++++
.../MkCustomEmojiDetailedDialog.stories.impl.ts | 38 +++++++
.../src/components/MkCwButton.stories.impl.ts | 89 ++++++++++++++++
21 files changed, 960 insertions(+), 42 deletions(-)
create mode 100644 packages/frontend/src/components/MkChannelFollowButton.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkChannelList.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkChannelPreview.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkChart.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkChartLegend.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkChartTooltip.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkClickerGame.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkClipPreview.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCode.core.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCode.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCodeEditor.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCodeInline.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkColorInput.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkContainer.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkContextMenu.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCropperDialog.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCustomEmojiDetailedDialog.stories.impl.ts
create mode 100644 packages/frontend/src/components/MkCwButton.stories.impl.ts
(limited to 'packages/frontend/src/components')
diff --git a/packages/frontend/src/components/MkChannelFollowButton.stories.impl.ts b/packages/frontend/src/components/MkChannelFollowButton.stories.impl.ts
new file mode 100644
index 0000000000..b99620da22
--- /dev/null
+++ b/packages/frontend/src/components/MkChannelFollowButton.stories.impl.ts
@@ -0,0 +1,77 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+/* eslint-disable @typescript-eslint/explicit-function-return-type */
+/* eslint-disable import/no-default-export */
+import { StoryObj } from '@storybook/vue3';
+import { HttpResponse, http } from 'msw';
+import { action } from '@storybook/addon-actions';
+import { expect, userEvent, within } from '@storybook/test';
+import { channel } from '../../.storybook/fakes.js';
+import { commonHandlers } from '../../.storybook/mocks.js';
+import MkChannelFollowButton from './MkChannelFollowButton.vue';
+import { semaphore } from '@/scripts/test-utils.js';
+import { i18n } from '@/i18n.js';
+
+function sleep(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+const s = semaphore();
+export const Default = {
+ render(args) {
+ return {
+ components: {
+ MkChannelFollowButton,
+ },
+ setup() {
+ return {
+ args,
+ };
+ },
+ computed: {
+ props() {
+ return {
+ ...this.args,
+ };
+ },
+ },
+ template: '',
+ };
+ },
+ args: {
+ channel: channel(),
+ full: true,
+ },
+ async play({ canvasElement }) {
+ await s.acquire();
+ await sleep(1000);
+ const canvas = within(canvasElement);
+ const buttonElement = canvas.getByRole('button');
+ await expect(buttonElement).toHaveTextContent(i18n.ts.follow);
+ await userEvent.click(buttonElement);
+ await sleep(1000);
+ await expect(buttonElement).toHaveTextContent(i18n.ts.unfollow);
+ await sleep(100);
+ await userEvent.click(buttonElement);
+ s.release();
+ },
+ parameters: {
+ layout: 'centered',
+ msw: {
+ handlers: [
+ ...commonHandlers,
+ http.post('/api/channels/follow', async ({ request }) => {
+ action('POST /api/channels/follow')(await request.json());
+ return HttpResponse.json({});
+ }),
+ http.post('/api/channels/unfollow', async ({ request }) => {
+ action('POST /api/channels/unfollow')(await request.json());
+ return HttpResponse.json({});
+ }),
+ ],
+ },
+ },
+} satisfies StoryObj;
diff --git a/packages/frontend/src/components/MkChannelFollowButton.vue b/packages/frontend/src/components/MkChannelFollowButton.vue
index 6b1b380e41..841d37a568 100644
--- a/packages/frontend/src/components/MkChannelFollowButton.vue
+++ b/packages/frontend/src/components/MkChannelFollowButton.vue
@@ -26,17 +26,18 @@ SPDX-License-Identifier: AGPL-3.0-only