Skip to content

Commit bcc90f4

Browse files
committed
fix(storybook): Fix broken stories for Settings page
Because: * Settings page, Connnected Services stories were broken This commit: * Fix the stories * Add story for hasLinkedAccount, noPassword state for settings page * Add stories for LinkedAccount modals (with password, no password) * Add BentoMenu open menu storybook state Closes #
1 parent 5dcc11e commit bcc90f4

10 files changed

Lines changed: 91 additions & 28 deletions

File tree

packages/fxa-settings/src/components/Settings/BentoMenu/index.stories.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
import React from 'react';
5+
import React, { useEffect } from 'react';
66
import BentoMenu from '.';
77
import { Meta } from '@storybook/react';
88
import { withLocalization } from 'fxa-react/lib/storybooks';
@@ -20,3 +20,21 @@ export const Basic = () => (
2020
</div>
2121
</div>
2222
);
23+
24+
export const MenuOpen = () => {
25+
useEffect(() => {
26+
(
27+
document.querySelector(
28+
'[data-testid="drop-down-bento-menu-toggle"]'
29+
) as HTMLButtonElement
30+
)?.click();
31+
}, []);
32+
33+
return (
34+
<div className="w-full flex justify-end">
35+
<div className="flex tablet:pr-10 pt-4">
36+
<BentoMenu />
37+
</div>
38+
</div>
39+
);
40+
};

packages/fxa-settings/src/components/Settings/ConnectedServices/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Localized, useLocalization } from '@fluent/react';
66
import { LinkExternal } from 'fxa-react/components/LinkExternal';
77
import { useBooleanState } from 'fxa-react/lib/hooks';
88
import groupBy from 'lodash.groupby';
9-
import { forwardRef, useCallback, useState } from 'react';
9+
import React, { forwardRef, useCallback, useState } from 'react';
1010
import { clearSignedInAccountUid, setSigningOut } from '../../../lib/cache';
1111
import { logViewEvent } from '../../../lib/metrics';
1212
import { isMobileDevice } from '../../../lib/utilities';

packages/fxa-settings/src/components/Settings/ConnectedServices/mocks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const DESKTOP_SYNC_MOCKS = [
8484
},
8585
];
8686

87-
const OAUTH_SERVICE_MOCKS = [
87+
export const OAUTH_SERVICE_MOCKS = [
8888
{
8989
clientId: 'a8c528140153d1c6',
9090
deviceId: null,

packages/fxa-settings/src/components/Settings/DataCollection/index.stories.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import React from 'react';
66
import { DataCollection } from '.';
77
import { Meta } from '@storybook/react';
8-
import { withLocalization } from 'fxa-react/lib/storybooks';
8+
import { withLocalization, withLocation } from 'fxa-react/lib/storybooks';
99
import { mockAppContext } from '../../../models/mocks';
1010
import { Account, AppContext } from '../../../models';
1111

1212
export default {
1313
title: 'Components/Settings/DataCollection',
1414
component: DataCollection,
15-
decorators: [withLocalization],
15+
decorators: [withLocalization, withLocation()],
1616
} as Meta;
1717

1818
const accountWithMetrics = {

packages/fxa-settings/src/components/Settings/DropDownAvatarMenu/index.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ const storyWithContext = (account: Partial<Account>) => {
4848
export const DefaultNoAvatarOrDisplayName =
4949
storyWithContext(accountWithoutAvatar);
5050

51-
export const WithAvatarAndDisplayName = () => <DropDownAvatarMenu />;
51+
export const WithAvatarAndDisplayName = storyWithContext(MOCK_ACCOUNT);

packages/fxa-settings/src/components/Settings/LinkedAccounts/index.stories.tsx

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
import React from 'react';
5+
import React, { useEffect } from 'react';
66
import { Meta } from '@storybook/react';
77
import { withLocalization } from 'fxa-react/lib/storybooks';
88
import { LinkedAccounts } from '.';
@@ -18,28 +18,67 @@ export default {
1818
} as Meta;
1919

2020
export const Default = () => (
21-
<LocationProvider>
22-
<AppContext.Provider
23-
value={mockAppContext({
24-
account: { linkedAccounts: MOCK_LINKED_ACCOUNTS } as any,
25-
})}
26-
>
27-
<LinkedAccounts />
28-
</AppContext.Provider>
29-
</LocationProvider>
30-
);
31-
32-
export const NoPassword = () => {
3321
<LocationProvider>
3422
<AppContext.Provider
3523
value={mockAppContext({
3624
account: {
37-
hasPassword: false,
25+
hasPassword: true,
3826
linkedAccounts: MOCK_LINKED_ACCOUNTS,
3927
} as any,
4028
})}
4129
>
4230
<LinkedAccounts />
4331
</AppContext.Provider>
44-
</LocationProvider>;
32+
</LocationProvider>
33+
);
34+
35+
export const WithPasswordUnlinkModal = () => {
36+
useEffect(() => {
37+
(
38+
document.querySelector(
39+
`[data-testid="linked-account-unlink-${MOCK_LINKED_ACCOUNTS[0].providerId}"]`
40+
) as HTMLButtonElement
41+
)?.click();
42+
}, []);
43+
44+
return (
45+
<LocationProvider>
46+
<AppContext.Provider
47+
value={mockAppContext({
48+
account: {
49+
hasPassword: true,
50+
linkedAccounts: MOCK_LINKED_ACCOUNTS,
51+
unlinkThirdParty: async () => {},
52+
} as any,
53+
})}
54+
>
55+
<LinkedAccounts />
56+
</AppContext.Provider>
57+
</LocationProvider>
58+
);
59+
};
60+
61+
export const NoPasswordUnlinkModal = () => {
62+
useEffect(() => {
63+
(
64+
document.querySelector(
65+
`[data-testid="linked-account-unlink-${MOCK_LINKED_ACCOUNTS[0].providerId}"]`
66+
) as HTMLButtonElement
67+
)?.click();
68+
}, []);
69+
70+
return (
71+
<LocationProvider>
72+
<AppContext.Provider
73+
value={mockAppContext({
74+
account: {
75+
hasPassword: false,
76+
linkedAccounts: MOCK_LINKED_ACCOUNTS,
77+
} as any,
78+
})}
79+
>
80+
<LinkedAccounts />
81+
</AppContext.Provider>
82+
</LocationProvider>
83+
);
4584
};

packages/fxa-settings/src/components/Settings/Nav/index.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const storyWithContext = (
5757
return story;
5858
};
5959

60-
export const Basic = () => <Nav />;
60+
export const Basic = storyWithContext(account);
6161

6262
export const WithLinkToSubscriptions = storyWithContext(
6363
account,

packages/fxa-settings/src/components/Settings/PageSettings/index.stories.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
coldStartAccount,
2121
completelyFilledOutAccount,
2222
partiallyFilledOutAccount,
23+
linkedAccountNoPassword,
2324
} from './mocks';
2425

2526
export default {
@@ -88,3 +89,8 @@ export const PartiallyFilledOutWithPhonePromo = storyWithContext(
8889
accountEligibleForRecoveryPhoneOnly,
8990
'with recovery phone promo'
9091
);
92+
93+
export const LinkedAccountNoPassword = storyWithContext(
94+
linkedAccountNoPassword,
95+
'linked account, no password'
96+
);

packages/fxa-settings/src/components/Settings/PageSettings/index.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { mockWebIntegration } from '../../../pages/Signin/SigninRecoveryCode/moc
1818
import { SettingsContext } from '../../../models/contexts/SettingsContext';
1919
import { Constants } from '../../../lib/constants';
2020
import {
21-
accountAlmostEligibleForRecoveryKeyButHasNoPassword,
21+
linkedAccountNoPassword,
2222
accountEligibleForRecoveryKey,
2323
accountEligibleForRecoveryPhoneAndKey,
2424
accountEligibleForRecoveryPhoneOnly,
@@ -270,7 +270,7 @@ describe('PageSettings', () => {
270270
renderWithRouter(
271271
<AppContext.Provider
272272
value={mockAppContext({
273-
account: accountAlmostEligibleForRecoveryKeyButHasNoPassword,
273+
account: linkedAccountNoPassword,
274274
})}
275275
>
276276
<PageSettings integration={mockWebIntegration} />

packages/fxa-settings/src/components/Settings/PageSettings/mocks.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { isMobileDevice } from '../../../lib/utilities';
66
import { Account } from '../../../models';
77
import { MOCK_ACCOUNT, mockEmail } from '../../../models/mocks';
8-
import { MOCK_SERVICES } from '../ConnectedServices/mocks';
8+
import { MOCK_SERVICES, OAUTH_SERVICE_MOCKS } from '../ConnectedServices/mocks';
99
import { MOCK_LINKED_ACCOUNTS } from '../LinkedAccounts/mocks';
1010

1111
const SERVICES_NON_MOBILE = MOCK_SERVICES.filter((d) => !isMobileDevice(d));
@@ -37,12 +37,12 @@ export const accountEligibleForRecoveryKey = {
3737
hasPassword: true,
3838
} as unknown as Account;
3939

40-
export const accountAlmostEligibleForRecoveryKeyButHasNoPassword = {
40+
export const linkedAccountNoPassword = {
4141
...MOCK_ACCOUNT,
4242
displayName: null,
43-
recoveryKey: { exists: false, estimatedSyncDeviceCount: 2 },
43+
recoveryKey: { exists: false, estimatedSyncDeviceCount: 0 },
4444
totp: { exists: false, verified: false },
45-
attachedClients: MOCK_SERVICES,
45+
attachedClients: OAUTH_SERVICE_MOCKS,
4646
linkedAccounts: MOCK_LINKED_ACCOUNTS,
4747
hasPassword: false,
4848
} as unknown as Account;

0 commit comments

Comments
 (0)