client/components/mma/identity/emailAndMarketing/EmailAndMarketing.stories.tsx (158 lines of code) (raw):

import type { Meta, StoryObj } from '@storybook/react'; import {http, HttpResponse} from 'msw'; import { ReactRouterDecorator } from '@/.storybook/ReactRouterDecorator'; import { consents } from '@/client/fixtures/consents'; import { InAppPurchase } from '@/client/fixtures/inAppPurchase'; import { toMembersDataApiResponse } from '@/client/fixtures/mdapiResponse'; import { newsletters } from '@/client/fixtures/newsletters'; import { newsletterSubscriptions } from '@/client/fixtures/newsletterSubscriptions'; import { digitalPackPaidByDirectDebit, guardianWeeklyPaidByCard, newspaperVoucherPaidByPaypal, } from '@/client/fixtures/productBuilder/testProducts'; import { singleContributionsAPIResponse } from '@/client/fixtures/singleContribution'; import { user } from '@/client/fixtures/user'; import { featureSwitches } from '@/shared/featureSwitches'; import { EmailAndMarketing } from './EmailAndMarketing'; export default { title: 'Pages/EmailAndMarketing', component: EmailAndMarketing, decorators: [ReactRouterDecorator], parameters: { layout: 'fullscreen', }, } as Meta<typeof EmailAndMarketing>; export const Default: StoryObj<typeof EmailAndMarketing> = { render: () => { return <EmailAndMarketing />; }, parameters: { msw: [ http.get('/api/me/mma', () => { return HttpResponse.json(toMembersDataApiResponse( guardianWeeklyPaidByCard(), digitalPackPaidByDirectDebit(), newspaperVoucherPaidByPaypal(), )) }), http.get('/idapi/user', () => { return HttpResponse.json(user) }), http.get('/idapi/newsletters', () => { return HttpResponse.json(newsletters) }), http.get('/idapi/user/newsletters', () => { return HttpResponse.json(newsletterSubscriptions) }), http.get('/mpapi/user/mobile-subscriptions', () => { return HttpResponse.json({ subscriptions: [] }) }), http.get('/api/me/one-off-contributions', () => { return HttpResponse.json([]) }), http.get('/idapi/consents', () => { return HttpResponse.json(consents) }), http.get('/api/reminders/status', () => { return HttpResponse.json({ recurringStatus: 'NotSet' }) }), ], }, }; export const WithNoProducts: StoryObj<typeof EmailAndMarketing> = { render: () => { return <EmailAndMarketing />; }, parameters: { msw: [ http.get('/api/me/mma', () => { return HttpResponse.json(toMembersDataApiResponse()) }), http.get('/idapi/user', () => { return HttpResponse.json(user) }), http.get('/idapi/newsletters', () => { return HttpResponse.json(newsletters) }), http.get('/idapi/user/newsletters', () => { return HttpResponse.json(newsletterSubscriptions) }), http.get('/mpapi/user/mobile-subscriptions', () => { return HttpResponse.json({subscriptions: []}) }), http.get('/api/me/one-off-contributions', () => { return HttpResponse.json([]) }), http.get('/idapi/consents', () => { return HttpResponse.json(consents) }), http.get('/api/reminders/status', () => { return HttpResponse.json({ recurringStatus: 'NotSet' }) }), ], }, }; export const WithIAP: StoryObj<typeof EmailAndMarketing> = { render: () => { featureSwitches['appSubscriptions'] = true; return <EmailAndMarketing />; }, parameters: { msw: [ http.get('/api/me/mma', () => { return HttpResponse.json(toMembersDataApiResponse()) }), http.get('/idapi/user', () => { return HttpResponse.json(user) }), http.get('/idapi/newsletters', () => { return HttpResponse.json(newsletters) }), http.get('/idapi/user/newsletters', () => { return HttpResponse.json(newsletterSubscriptions) }), http.get('/mpapi/user/mobile-subscriptions', () => { return HttpResponse.json({ subscriptions: [InAppPurchase] }) }), http.get('/api/me/one-off-contributions', () => { return HttpResponse.json([]) }), http.get('/idapi/consents', () => { return HttpResponse.json(consents) }), http.get('/api/reminders/status', () => { return HttpResponse.json({ recurringStatus: 'NotSet' }) }), ], }, }; export const WithSingleContribution: StoryObj<typeof EmailAndMarketing> = { render: () => { return <EmailAndMarketing />; }, parameters: { msw: [ http.get('/api/me/mma', () => { return HttpResponse.json(toMembersDataApiResponse()) }), http.get('/idapi/user', () => { return HttpResponse.json(user) }), http.get('/idapi/newsletters', () => { return HttpResponse.json(newsletters) }), http.get('/idapi/user/newsletters', () => { return HttpResponse.json(newsletterSubscriptions) }), http.get('/mpapi/user/mobile-subscriptions', () => { return HttpResponse.json({ subscriptions: [] }) }), http.get('/api/me/one-off-contributions', () => { return HttpResponse.json(singleContributionsAPIResponse) }), http.get('/idapi/consents', () => { return HttpResponse.json(consents) }), http.get('/api/reminders/status', () => { return HttpResponse.json({ recurringStatus: 'NotSet' }) }), ], }, };