client/components/mma/cancel/cancellationSaves/digipack/DigiSubSaves.stories.tsx (101 lines of code) (raw):
import type { Meta, StoryFn, StoryObj } from '@storybook/react';
import { http, HttpResponse } from 'msw';
import { ReactRouterDecorator } from '@/.storybook/ReactRouterDecorator';
import { CancellationContainer } from '@/client/components/mma/cancel/CancellationContainer';
import { ConfirmDigiSubCancellation } from '@/client/components/mma/cancel/cancellationSaves/digipack/ConfirmDigiSubCancellation';
import { DigiSubDiscountConfirmed } from '@/client/components/mma/cancel/cancellationSaves/digipack/DigiSubDiscountConfirmed';
import { DigiSubThankYouOffer } from '@/client/components/mma/cancel/cancellationSaves/digipack/DigiSubThankYouOffer';
import {
digitalPackPaidByDirectDebit,
digitalPackWithPaymentFailure,
} from '@/client/fixtures/productBuilder/testProducts';
import { PRODUCT_TYPES } from '@/shared/productTypes';
import { SelectReason } from '../SelectReason';
export default {
title: 'Pages/DigiSubSaves',
component: CancellationContainer,
decorators: [ReactRouterDecorator],
parameters: {
layout: 'fullscreen',
reactRouter: {
state: {
productDetail: digitalPackPaidByDirectDebit(),
user: { email: 'test@test.com' },
},
container: (
<CancellationContainer productType={PRODUCT_TYPES.digipack} />
),
},
},
} as Meta<typeof CancellationContainer>;
export const DiscountConfirmed: StoryObj<typeof DigiSubDiscountConfirmed> = {
render: () => {
return <DigiSubDiscountConfirmed />;
},
parameters: {
reactRouter: {
state: {
productDetail: digitalPackPaidByDirectDebit(),
user: { email: 'test@test.com' },
eligibleForDiscount: true,
discountedPrice: 111.75,
discountPeriod: '12 months',
},
},
},
};
export const EligibleForDiscount: StoryObj<typeof DigiSubThankYouOffer> = {
render: () => {
return <DigiSubThankYouOffer />;
},
parameters: {
msw: [
http.post('/api/discounts/preview-discount', () => {
return HttpResponse.json({
discountedPrice: 111.75,
upToPeriods: '12',
upToPeriodsType: 'month',
firstDiscountedPaymentDate: '2024-05-30',
nextNonDiscountedPaymentDate: '2024-07-30',
});
}),
],
},
};
export const IneligibleForDiscount: StoryObj<typeof DigiSubThankYouOffer> = {
render: () => {
return <DigiSubThankYouOffer />;
},
parameters: {
reactRouter: {
state: {
productDetail: digitalPackWithPaymentFailure(),
user: { email: 'test@test.com' },
},
},
msw: [
http.post('/api/discounts/preview-discount', () => {
return new HttpResponse(null, {
status: 400,
});
}),
],
},
};
export const ConfirmCancellation: StoryObj<typeof ConfirmDigiSubCancellation> =
{
render: () => {
return <ConfirmDigiSubCancellation />;
},
parameters: {
reactRouter: {
state: {
productDetail: digitalPackWithPaymentFailure(),
user: { email: 'test@test.com' },
eligibleForDiscount: true,
},
},
},
};
export const DigiSubCancellationReason: StoryFn<typeof SelectReason> = () => {
return <SelectReason />;
};