Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix storybook tests #6594

Merged
merged 7 commits into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { expect } from '@storybook/jest';
import { Meta, StoryObj } from '@storybook/react';
import { within } from '@storybook/test';

Expand All @@ -7,7 +6,6 @@ import {
PageDecorator,
PageDecoratorArgs,
} from '~/testing/decorators/PageDecorator';
import { PrefetchLoadingDecorator } from '~/testing/decorators/PrefetchLoadingDecorator';
import { graphqlMocks } from '~/testing/graphqlMocks';

const meta: Meta<PageDecoratorArgs> = {
Expand All @@ -31,17 +29,15 @@ export type Story = StoryObj<typeof RecordIndexPage>;
export const Default: Story = {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
decorators: [PrefetchLoadingDecorator, PageDecorator],
decorators: [PageDecorator],
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);

await canvas.findByText('Search');
await canvas.findByText('Settings');
await canvas.findByText('Tasks');

expect(canvas.queryByText('People')).toBeNull();
expect(canvas.queryByText('Opportunities')).toBeNull();
expect(canvas.queryByText('Listings')).toBeNull();
expect(canvas.queryByText('My Customs')).toBeNull();
await canvas.findByText('People');
await canvas.findByText('Opportunities');
await canvas.findByText('My Customs');
},
};
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useEffect } from 'react';
import { action } from '@storybook/addon-actions';
import { Meta, StoryObj } from '@storybook/react';
import { expect, userEvent, within } from '@storybook/test';
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { IconCheckbox, IconNotes } from 'twenty-ui';

Expand All @@ -14,7 +14,6 @@ import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadat
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
import { graphqlMocks } from '~/testing/graphqlMocks';
import { getCompaniesMock } from '~/testing/mock-data/companies';
import { getPeopleMock } from '~/testing/mock-data/people';
import {
mockDefaultWorkspace,
mockedWorkspaceMemberData,
Expand All @@ -23,7 +22,6 @@ import { sleep } from '~/utils/sleep';

import { CommandMenu } from '../CommandMenu';

const peopleMock = getPeopleMock();
const companiesMock = getCompaniesMock();

const openTimeout = 50;
Expand Down Expand Up @@ -99,13 +97,8 @@ export const MatchingPersonCompanyActivityCreateNavigate: Story = {
const searchInput = await canvas.findByPlaceholderText('Search');
await sleep(openTimeout);
await userEvent.type(searchInput, 'n');
expect(
await canvas.findByText(
peopleMock[0].name.firstName + ' ' + peopleMock[0].name.lastName,
),
).toBeInTheDocument();
expect(await canvas.findByText('Linkedin')).toBeInTheDocument();
expect(await canvas.findByText(companiesMock[0].name)).toBeInTheDocument();
expect(await canvas.findByText('My very first note')).toBeInTheDocument();
expect(await canvas.findByText('Create Note')).toBeInTheDocument();
expect(await canvas.findByText('Go to Companies')).toBeInTheDocument();
},
Expand All @@ -128,21 +121,6 @@ export const AtleastMatchingOnePerson: Story = {
const searchInput = await canvas.findByPlaceholderText('Search');
await sleep(openTimeout);
await userEvent.type(searchInput, 'alex');
expect(
await canvas.findByText(
peopleMock[0].name.firstName + ' ' + peopleMock[0].name.lastName,
),
).toBeInTheDocument();
},
};

export const NotMatchingAnything: Story = {
play: async () => {
const canvas = within(document.body);
const searchInput = await canvas.findByPlaceholderText('Search');
await sleep(openTimeout);
await userEvent.type(searchInput, 'asdasdasd');
// FIXME: We need to fix the filters in graphql
// expect(await canvas.findByText('No results found')).toBeInTheDocument();
expect(await canvas.findByText('Sylvie Palmer')).toBeInTheDocument();
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadat
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
import { graphqlMocks } from '~/testing/graphqlMocks';

import { PrefetchLoadedDecorator } from '~/testing/decorators/PrefetchLoadedDecorator';
import { ObjectMetadataNavItems } from '../ObjectMetadataNavItems';

const meta: Meta<typeof ObjectMetadataNavItems> = {
Expand All @@ -20,6 +21,7 @@ const meta: Meta<typeof ObjectMetadataNavItems> = {
ComponentWithRouterDecorator,
ComponentWithRecoilScopeDecorator,
SnackBarDecorator,
PrefetchLoadedDecorator,
],
parameters: {
msw: graphqlMocks,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,9 @@ export const useFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
objectMetadataItem,
});

const pageInfo = data?.[objectMetadataItem.namePlural].pageInfo;
const totalCount = data?.[objectMetadataItem.namePlural].totalCount;
const pageInfo = data?.[objectMetadataItem.namePlural]?.pageInfo;

const totalCount = data?.[objectMetadataItem.namePlural]?.totalCount;

return {
objectMetadataItem,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,26 +83,16 @@ export const Date: Story = {
},
};

export const Link: Story = {
export const Links: Story = {
args: {
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
({ name, type }) =>
name === 'linkedinLink' && type === FieldMetadataType.Link,
name === 'linkedinLink' && type === FieldMetadataType.Links,
),
objectMetadataItem: mockedCompanyObjectMetadataItem,
},
};

export const Links: Story = {
args: {
...Link.args,
fieldMetadataItem: {
...Link.args!.fieldMetadataItem!,
type: FieldMetadataType.Links,
},
},
};

export const Number: Story = {
args: {
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { expect } from '@storybook/jest';
import { Meta, StoryObj } from '@storybook/react';
import { within, userEvent } from '@storybook/test';
import { userEvent, within } from '@storybook/test';
import { useSetRecoilState } from 'recoil';

import { currentUserState } from '@/auth/states/currentUserState';
Expand All @@ -15,6 +15,7 @@ import {
} from '~/testing/mock-data/users';

import { SupportDropdown } from '@/support/components/SupportDropdown';
import { PrefetchLoadedDecorator } from '~/testing/decorators/PrefetchLoadedDecorator';

const meta: Meta<typeof SupportDropdown> = {
title: 'Modules/Support/SupportDropdown',
Expand All @@ -35,6 +36,7 @@ const meta: Meta<typeof SupportDropdown> = {

return <Story />;
},
PrefetchLoadedDecorator,
],
parameters: {
msw: graphqlMocks,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,30 +87,12 @@ export const Default: Story = {
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);

await canvas.findAllByText(
peopleMock[0].name.firstName + ' ' + peopleMock[0].name.lastName,
);
// await canvas.findAllByText(peopleMock[0].name.firstName);
expect(
await canvas.findByText('Add your first Activity', undefined, {
await canvas.findByText('Twenty', undefined, {
timeout: 3000,
}),
).toBeInTheDocument();
},
};

export const Loading: Story = {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
decorators: [PageDecorator],
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);

expect(
canvas.queryByText(
peopleMock[0].name.firstName + ' ' + peopleMock[0].name.lastName,
),
).toBeNull();

expect(
await canvas.findByText('Add your first Activity', undefined, {
timeout: 3000,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export const SettingsObjects = () => {
/>
</UndecoratedLink>
</SettingsHeaderContainer>
<div>
<>
<SettingsObjectCoverImage />
<Section>
<H2Title title="Existing objects" />
Expand Down Expand Up @@ -122,7 +122,7 @@ export const SettingsObjects = () => {
)}
</Table>
</Section>
</div>
</>
</SettingsPageContainer>
</SubMenuTopBarContainer>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Decorator } from '@storybook/react';
import { useSetRecoilState } from 'recoil';

import { prefetchIsLoadedFamilyState } from '@/prefetch/states/prefetchIsLoadedFamilyState';
import { PrefetchKey } from '@/prefetch/types/PrefetchKey';

export const PrefetchLoadedDecorator: Decorator = (Story) => {
const setAreViewsPrefetched = useSetRecoilState(
prefetchIsLoadedFamilyState(PrefetchKey.AllViews),
);
const setAreFavoritesPrefetched = useSetRecoilState(
prefetchIsLoadedFamilyState(PrefetchKey.AllFavorites),
);

setAreViewsPrefetched(true);
setAreFavoritesPrefetched(true);

return <Story />;
};
Loading