diff --git a/client/components/mma/cancel/cancellationReason.ts b/client/components/mma/cancel/cancellationReason.ts index a9db4402d..cbcd5c7f7 100644 --- a/client/components/mma/cancel/cancellationReason.ts +++ b/client/components/mma/cancel/cancellationReason.ts @@ -34,27 +34,17 @@ export type CancellationReasonId = | 'mma_better_offer' | 'mma_issue' | 'mma_financial_circumstances' - | 'mma_cost_of_living' - | 'mma_cutting_subscriptions' | 'mma_payment_issue' - | 'mma_article' + | 'mma_price_increase' | 'mma_editorial' | 'mma_benefits' | 'mma_value_for_money' | 'mma_support_another_way' - | 'mma_prefer_lower_amount' - | 'mma_prefer_less_frequent' - | 'mma_direct_debit' - | 'mma_one_off' - | 'mma_wants_monthly_contribution' - | 'mma_wants_annual_contribution' | 'mma_health' | 'mma_break_from_news' | 'mma_values' - | 'mma_no_need' - | 'mma_dont_know_what_for' | 'mma_other' - | 'mma_membership_cancellation_default' - | 'mma_cancellation_default'; + | 'mma_cancellation_default' + | 'mma_membership_cancellation_default'; export type OptionalCancellationReasonId = CancellationReasonId | undefined; diff --git a/client/components/mma/cancel/contributions/ContributionsCancellationReasons.tsx b/client/components/mma/cancel/contributions/ContributionsCancellationReasons.tsx index a9bc8e937..a038c8217 100644 --- a/client/components/mma/cancel/contributions/ContributionsCancellationReasons.tsx +++ b/client/components/mma/cancel/contributions/ContributionsCancellationReasons.tsx @@ -1,7 +1,5 @@ -import { - financialCircumstances, - standardAlternateFeedbackIntro, -} from '../cancellationConstants'; +import { shuffleArray } from '@/client/utilities/utils'; +import { standardAlternateFeedbackIntro } from '../cancellationConstants'; import type { CancellationReason } from '../cancellationReason'; import { ContributionsCancellationAmountUpdatedSaved } from './ContributionsCancellationAmountUpdatedSaved'; import { ContributionsCancellationFlowFinancialSaveAttempt } from './ContributionsCancellationFlowFinancialSaveAttempt'; @@ -12,11 +10,6 @@ export const contributionsCancellationReasons: CancellationReason[] = [ linkLabel: 'I am unhappy with some editorial decisions', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, - { - reasonId: 'mma_article', - linkLabel: 'As the result of a specific article I read', - alternateFeedbackIntro: standardAlternateFeedbackIntro, - }, { reasonId: 'mma_financial_circumstances', linkLabel: 'I can no longer afford to support you', @@ -28,19 +21,8 @@ export const contributionsCancellationReasons: CancellationReason[] = [ hideContactUs: true, }, { - reasonId: 'mma_cost_of_living', - linkLabel: 'Due to the cost of living crisis', - saveBody: ContributionsCancellationFlowFinancialSaveAttempt, - savedBody: ContributionsCancellationAmountUpdatedSaved, - alternateFeedbackIntro: standardAlternateFeedbackIntro, - hideSaveActions: true, - skipFeedback: true, - hideContactUs: true, - }, - { - reasonId: 'mma_cutting_subscriptions', - linkLabel: - 'I’m cutting down on my subscriptions with various organisations', + reasonId: 'mma_price_increase', + linkLabel: 'The price has recently increased', saveBody: ContributionsCancellationFlowFinancialSaveAttempt, savedBody: ContributionsCancellationAmountUpdatedSaved, alternateFeedbackIntro: standardAlternateFeedbackIntro, @@ -51,38 +33,19 @@ export const contributionsCancellationReasons: CancellationReason[] = [ { reasonId: 'mma_benefits', linkLabel: - 'I’d like to get something ‘in return’ for my support, e.g. digital features', + 'I’m not fully satisfied with the product features or benefits', alternateFeedbackIntro: standardAlternateFeedbackIntro, saveBody: [ 'Thank you for your ongoing support. Once you’ve completed your cancellation below, you can set up a new product via our online checkouts.', ], }, { - reasonId: 'mma_prefer_lower_amount', - linkLabel: 'I’d like to support you, but at a lower amount', + reasonId: 'mma_support_another_way', + linkLabel: 'I want to support in a different way', saveBody: ContributionsCancellationFlowFinancialSaveAttempt, savedBody: ContributionsCancellationAmountUpdatedSaved, alternateFeedbackIntro: standardAlternateFeedbackIntro, hideSaveActions: true, - skipFeedback: true, - hideContactUs: true, - }, - { - reasonId: 'mma_prefer_less_frequent', - linkLabel: 'I’d like to support you, but less frequently', - saveBody: ContributionsCancellationFlowFinancialSaveAttempt, - savedBody: ContributionsCancellationAmountUpdatedSaved, - alternateFeedbackIntro: standardAlternateFeedbackIntro, - hideSaveActions: true, - skipFeedback: true, - hideContactUs: true, - }, - { - reasonId: 'mma_one_off', - linkLabel: - 'I’d rather give spontaneously than have a recurring payment', - saveBody: financialCircumstances, - alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { reasonId: 'mma_values', @@ -90,23 +53,23 @@ export const contributionsCancellationReasons: CancellationReason[] = [ alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_no_need', - linkLabel: 'I don’t think the Guardian needs my support', + reasonId: 'mma_break_from_news', + linkLabel: 'I’m taking a break from news', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_dont_know_what_for', - linkLabel: 'I don’t know what my money is being used for', + reasonId: 'mma_dont_read_enough', + linkLabel: 'I don’t have enough time to read regularly', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_break_from_news', - linkLabel: 'I am taking a break from news', + reasonId: 'mma_issue', + linkLabel: 'I’m having technical issues', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_dont_read_enough', - linkLabel: 'I no longer read the Guardian enough to justify my support', + reasonId: 'mma_health', + linkLabel: 'I’m dealing with personal or health matters', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, ]; @@ -119,11 +82,7 @@ export const otherCancellationReason: CancellationReason[] = [ }, ]; -const shuffledArray = [...contributionsCancellationReasons].sort( - () => 0.5 - Math.random(), -); - export const shuffledContributionsCancellationReasons: CancellationReason[] = [ - ...shuffledArray, + ...(shuffleArray(contributionsCancellationReasons) as CancellationReason[]), ...otherCancellationReason, ]; diff --git a/client/components/mma/cancel/digipack/DigipackCancellationReasons.tsx b/client/components/mma/cancel/digipack/DigipackCancellationReasons.tsx index 8f629f7c1..b9fc5bff4 100644 --- a/client/components/mma/cancel/digipack/DigipackCancellationReasons.tsx +++ b/client/components/mma/cancel/digipack/DigipackCancellationReasons.tsx @@ -1,3 +1,4 @@ +import { shuffleArray } from '@/client/utilities/utils'; import { inOrderToImproveSubs, standardAlternateFeedbackIntro, @@ -81,6 +82,9 @@ export const digipackCancellationReasons: CancellationReason[] = [ linkLabel: 'I’ve been experiencing technical or service problems', alternateFeedbackIntro: inOrderToImproveSubs, }, +]; + +export const otherCancellationReason: CancellationReason[] = [ { reasonId: 'mma_other', linkLabel: 'None of the above', @@ -88,3 +92,8 @@ export const digipackCancellationReasons: CancellationReason[] = [ alternateFeedbackIntro: inOrderToImproveSubs, }, ]; + +export const shuffledDigipackCancellationReasons: CancellationReason[] = [ + ...(shuffleArray(digipackCancellationReasons) as CancellationReason[]), + ...otherCancellationReason, +]; diff --git a/client/components/mma/cancel/gw/GwCancellationReasons.tsx b/client/components/mma/cancel/gw/GwCancellationReasons.tsx index cdd4cb492..15485ad72 100644 --- a/client/components/mma/cancel/gw/GwCancellationReasons.tsx +++ b/client/components/mma/cancel/gw/GwCancellationReasons.tsx @@ -1,3 +1,4 @@ +import { shuffleArray } from '@/client/utilities/utils'; import { inOrderToImproveSubs, standardAlternateFeedbackIntro, @@ -86,6 +87,9 @@ export const gwCancellationReasons: CancellationReason[] = [ linkLabel: 'I don’t want an auto-renewing subscription', skipFeedback: true, }, +]; + +export const otherCancellationReason: CancellationReason[] = [ { reasonId: 'mma_other', linkLabel: 'None of the above', @@ -93,3 +97,8 @@ export const gwCancellationReasons: CancellationReason[] = [ alternateFeedbackIntro: inOrderToImproveSubs, }, ]; + +export const shuffledGWCancellationReasons: CancellationReason[] = [ + ...(shuffleArray(gwCancellationReasons) as CancellationReason[]), + ...otherCancellationReason, +]; diff --git a/client/components/mma/cancel/membership/MembershipCancellationReasons.tsx b/client/components/mma/cancel/membership/MembershipCancellationReasons.tsx index 49d50f13d..09e0b9a23 100644 --- a/client/components/mma/cancel/membership/MembershipCancellationReasons.tsx +++ b/client/components/mma/cancel/membership/MembershipCancellationReasons.tsx @@ -1,3 +1,4 @@ +import { shuffleArray } from '@/client/utilities/utils'; import type { CancellationReason } from '../cancellationReason'; import { BreakFromNewsWithGW, PaymentIssue } from '../GenericSaveBodyResponses'; @@ -75,6 +76,9 @@ export const membershipCancellationReasons: CancellationReason[] = [ 'If there’s anything we can do differently please take a moment to give us some feedback', ], }, +]; + +export const otherCancellationReason: CancellationReason[] = [ { reasonId: 'mma_other', linkLabel: 'Other', @@ -85,3 +89,8 @@ export const membershipCancellationReasons: CancellationReason[] = [ ], }, ]; + +export const shuffledMembershipCancellationReasons: CancellationReason[] = [ + ...(shuffleArray(membershipCancellationReasons) as CancellationReason[]), + ...otherCancellationReason, +]; diff --git a/client/components/mma/cancel/supporterplus/SupporterplusCancellationReasons.tsx b/client/components/mma/cancel/supporterplus/SupporterplusCancellationReasons.tsx index 7afc2ea22..10bd078cc 100644 --- a/client/components/mma/cancel/supporterplus/SupporterplusCancellationReasons.tsx +++ b/client/components/mma/cancel/supporterplus/SupporterplusCancellationReasons.tsx @@ -10,11 +10,6 @@ export const supporterplusCancellationReasons: CancellationReason[] = [ linkLabel: 'I am unhappy with some editorial decisions', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, - { - reasonId: 'mma_article', - linkLabel: 'As a result of a specific article I read', - alternateFeedbackIntro: standardAlternateFeedbackIntro, - }, { reasonId: 'mma_financial_circumstances', linkLabel: 'I can no longer afford to support you', @@ -22,66 +17,46 @@ export const supporterplusCancellationReasons: CancellationReason[] = [ alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_cost_of_living', - linkLabel: 'Due to the cost of living crisis', - saveBody: financialCircumstances, - alternateFeedbackIntro: standardAlternateFeedbackIntro, - }, - { - reasonId: 'mma_cutting_subscriptions', - linkLabel: - 'I’m cutting down on my subscriptions with various organisations', + reasonId: 'mma_price_increase', + linkLabel: 'The price has recently increased', saveBody: financialCircumstances, alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_prefer_lower_amount', + reasonId: 'mma_support_another_way', linkLabel: 'I’d like to support you, but at a lower amount', saveBody: financialCircumstances, alternateFeedbackIntro: standardAlternateFeedbackIntro, }, - { - reasonId: 'mma_prefer_less_frequent', - linkLabel: 'I’d like to support you, but less frequently', - saveBody: financialCircumstances, - alternateFeedbackIntro: standardAlternateFeedbackIntro, - }, - { - reasonId: 'mma_one_off', - linkLabel: - 'I’d rather give spontaneously than have a recurring payment', - saveBody: financialCircumstances, - alternateFeedbackIntro: standardAlternateFeedbackIntro, - }, { reasonId: 'mma_values', linkLabel: 'I don’t feel that the Guardian values my support', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_no_need', - linkLabel: 'I don’t think the Guardian needs my support', + reasonId: 'mma_benefits', + linkLabel: + 'I’m not fully satisfied with the product features or benefits', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_dont_know_what_for', - linkLabel: 'I don’t know what my money is being used for', + reasonId: 'mma_break_from_news', + linkLabel: 'I’m taking a break from news', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_value_for_money', - linkLabel: - 'I didn’t get enough value for money from my ‘supporter extras’', + reasonId: 'mma_dont_read_enough', + linkLabel: 'I don’t have enough time to read regularly', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_break_from_news', - linkLabel: 'I am taking a break from news', + reasonId: 'mma_issue', + linkLabel: 'I’m having technical issues', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, { - reasonId: 'mma_dont_read_enough', - linkLabel: 'I no longer read the Guardian enough to justify my support', + reasonId: 'mma_health', + linkLabel: 'I’m dealing with personal or health matters', alternateFeedbackIntro: standardAlternateFeedbackIntro, }, ]; diff --git a/client/components/mma/cancel/tierThree/TierThreeCancellationReasons.tsx b/client/components/mma/cancel/tierThree/TierThreeCancellationReasons.tsx new file mode 100644 index 000000000..9693c420d --- /dev/null +++ b/client/components/mma/cancel/tierThree/TierThreeCancellationReasons.tsx @@ -0,0 +1,104 @@ +import { shuffleArray } from '@/client/utilities/utils'; +import { + inOrderToImproveSubs, + standardAlternateFeedbackIntro, +} from '../cancellationConstants'; +import type { CancellationReason } from '../cancellationReason'; +import { BreakFromNewsWithAlternative } from '../GenericSaveBodyResponses'; + +export const tierThreeCancellationReasons: CancellationReason[] = [ + { + reasonId: 'mma_editorial', + linkLabel: 'I am unhappy with Guardian journalism', + saveBody: [ + 'In order to improve our journalism, we’d love to know more about why you are thinking of cancelling.', + ], + alternateFeedbackIntro: standardAlternateFeedbackIntro, + }, + { + reasonId: 'mma_financial_circumstances', + linkLabel: 'A change in my financial circumstances', + saveBody: [ + 'We understand that financial circumstances can change from time to time.', + 'Making a smaller contribution to the Guardian can be an inexpensive way of keeping journalism open for everyone to read and enjoy. Once you’ve completed your cancellation below, we hope you’ll consider a small one off or recurring contribution in the future.', + ], + skipFeedback: true, + }, + { + reasonId: 'mma_support_another_way', + linkLabel: + 'I am going to support The Guardian in another way, eg. by subscribing', + saveBody: [ + 'Thank you for your ongoing support.', + 'Once you’ve completed your cancellation below, you can set up a new product via our online checkouts.', + ], + skipFeedback: true, + }, + { + reasonId: 'mma_health', + linkLabel: 'Ill-health', + saveBody: [ + 'Thank you for your ongoing support.', + 'Your subscription has ensured that our quality journalism remains open for everyone to read and enjoy.', + 'Please confirm your cancellation below.', + ], + skipFeedback: true, + }, + { + reasonId: 'mma_break_from_news', + linkLabel: 'I am taking a break from news', + saveBody: BreakFromNewsWithAlternative, + escalationSaveBody: [ + 'We’d love to know more about what we could do better to help provide inspiring and trustworthy news.', + ], + }, + { + reasonId: 'mma_values', + linkLabel: 'I don’t feel that The Guardian values my support', + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_time', + linkLabel: "I don't have time to use my subscription", + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_better_offer', + linkLabel: "I've found a better offer with another publisher", + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_value_for_money', + linkLabel: "I wasn't getting value for money", + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_covid', + linkLabel: 'My subscription use is disrupted due to COVID-19', + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_delivery_issue', + linkLabel: 'I’ve had repeated delivery issues', + alternateFeedbackIntro: inOrderToImproveSubs, + }, + { + reasonId: 'mma_autorenew', + linkLabel: 'I don’t want an auto-renewing subscription', + skipFeedback: true, + }, +]; + +export const otherCancellationReason: CancellationReason[] = [ + { + reasonId: 'mma_other', + linkLabel: 'None of the above', + saveTitle: 'Other', + alternateFeedbackIntro: inOrderToImproveSubs, + }, +]; + +export const shuffledTierThreeCancellationReasons: CancellationReason[] = [ + ...(shuffleArray(tierThreeCancellationReasons) as CancellationReason[]), + ...otherCancellationReason, +]; diff --git a/client/components/mma/cancel/voucher/VoucherCancellationReasons.tsx b/client/components/mma/cancel/voucher/VoucherCancellationReasons.tsx index 18539eadb..f82411efc 100644 --- a/client/components/mma/cancel/voucher/VoucherCancellationReasons.tsx +++ b/client/components/mma/cancel/voucher/VoucherCancellationReasons.tsx @@ -1,3 +1,4 @@ +import { shuffleArray } from '@/client/utilities/utils'; import { inOrderToImproveSubs, standardAlternateFeedbackIntro, @@ -86,6 +87,9 @@ export const voucherCancellationReasons: CancellationReason[] = [ linkLabel: 'I’ve had problems redeeming my vouchers', alternateFeedbackIntro: inOrderToImproveSubs, }, +]; + +export const otherCancellationReason: CancellationReason[] = [ { reasonId: 'mma_other', linkLabel: 'None of the above', @@ -93,3 +97,8 @@ export const voucherCancellationReasons: CancellationReason[] = [ alternateFeedbackIntro: inOrderToImproveSubs, }, ]; + +export const shuffledVoucherCancellationReasons: CancellationReason[] = [ + ...(shuffleArray(voucherCancellationReasons) as CancellationReason[]), + ...otherCancellationReason, +]; diff --git a/client/utilities/utils.ts b/client/utilities/utils.ts index 76e48e307..a6d1324c6 100644 --- a/client/utilities/utils.ts +++ b/client/utilities/utils.ts @@ -6,6 +6,9 @@ export function flattenEquivalent(x: T): T { return x; } +export const shuffleArray = (array: unknown[]) => + [...array].sort(() => 0.5 - Math.random()); + export function formatAmount(amount: number) { return Number.isInteger(amount) ? amount : amount.toFixed(2); } diff --git a/cypress/tests/mocked/parallel-2/cancelContribution.cy.ts b/cypress/tests/mocked/parallel-2/cancelContribution.cy.ts index 77216868d..5cf3d23f7 100644 --- a/cypress/tests/mocked/parallel-2/cancelContribution.cy.ts +++ b/cypress/tests/mocked/parallel-2/cancelContribution.cy.ts @@ -107,7 +107,7 @@ describe('Cancel contribution', () => { }).as('apply_discount'); cy.findByRole('radio', { - name: 'As the result of a specific article I read', + name: 'I am unhappy with some editorial decisions', }).click(); cy.findByRole('button', { name: 'Continue' }).click(); @@ -136,7 +136,7 @@ describe('Cancel contribution', () => { }).as('preview_discount'); cy.findByRole('radio', { - name: 'As the result of a specific article I read', + name: 'I am unhappy with some editorial decisions', }).click(); cy.findByRole('button', { name: 'Continue' }).click(); @@ -167,10 +167,10 @@ describe('Cancel contribution', () => { }); } - it('cancels contribution (reason: As a result of a specific article I read)', () => { + it('cancels contribution (reason: I am unhappy with some editorial decisions)', () => { setupCancellation(); cy.findByRole('radio', { - name: 'As the result of a specific article I read', + name: 'I am unhappy with some editorial decisions', }).click(); cy.findByRole('button', { name: 'Continue' }).click(); @@ -236,10 +236,10 @@ describe('Cancel contribution', () => { cy.get('@get_cancellation_date.all').should('have.length', 0); }); - it('cancels contribution with save body string (reason: I’d like to get something in return for my support)', () => { + it('cancels contribution with save body string (reason: I’m not fully satisfied with the product features or benefits)', () => { setupCancellation(); cy.findAllByRole('radio', { - name: 'I’d like to get something ‘in return’ for my support, e.g. digital features', + name: 'I’m not fully satisfied with the product features or benefits', }).click(); cy.findByRole('button', { name: 'Continue' }).click(); diff --git a/shared/productTypes.ts b/shared/productTypes.ts index 1af898c82..a68975068 100644 --- a/shared/productTypes.ts +++ b/shared/productTypes.ts @@ -1,5 +1,6 @@ import type { ReactNode } from 'react'; import { tierThreeCancellationFlowStart } from '@/client/components/mma/cancel/tierThree/TierThreeCancellationFlowStart'; +import { shuffledTierThreeCancellationReasons } from '@/client/components/mma/cancel/tierThree/TierThreeCancellationReasons'; import type { CurrencyIso } from '@/client/utilities/currencyIso'; import { convertCurrencyIsoToSymbol } from '@/client/utilities/currencyIso'; import type { @@ -9,17 +10,17 @@ import type { import { contributionsCancellationFlowStart } from '../client/components/mma/cancel/contributions/ContributionsCancellationFlowStart'; import { shuffledContributionsCancellationReasons } from '../client/components/mma/cancel/contributions/ContributionsCancellationReasons'; import { digipackCancellationFlowStart } from '../client/components/mma/cancel/digipack/DigipackCancellationFlowStart'; -import { digipackCancellationReasons } from '../client/components/mma/cancel/digipack/DigipackCancellationReasons'; +import { shuffledDigipackCancellationReasons } from '../client/components/mma/cancel/digipack/DigipackCancellationReasons'; import { gwCancellationFlowStart } from '../client/components/mma/cancel/gw/GwCancellationFlowStart'; -import { gwCancellationReasons } from '../client/components/mma/cancel/gw/GwCancellationReasons'; +import { shuffledGWCancellationReasons } from '../client/components/mma/cancel/gw/GwCancellationReasons'; import { membershipCancellationFlowStart } from '../client/components/mma/cancel/membership/MembershipCancellationFlowStart'; -import { membershipCancellationReasons } from '../client/components/mma/cancel/membership/MembershipCancellationReasons'; +import { shuffledMembershipCancellationReasons } from '../client/components/mma/cancel/membership/MembershipCancellationReasons'; import type { RestOfCancellationFlow } from '../client/components/mma/cancel/PhysicalSubsCancellationFlowWrapper'; import { physicalSubsCancellationFlowWrapper } from '../client/components/mma/cancel/PhysicalSubsCancellationFlowWrapper'; import { supporterplusCancellationFlowStart } from '../client/components/mma/cancel/supporterplus/SupporterplusCancellationFlowStart'; import { shuffledSupporterPlusCancellationReasons } from '../client/components/mma/cancel/supporterplus/SupporterplusCancellationReasons'; import { voucherCancellationFlowStart } from '../client/components/mma/cancel/voucher/VoucherCancellationFlowStart'; -import { voucherCancellationReasons } from '../client/components/mma/cancel/voucher/VoucherCancellationReasons'; +import { shuffledVoucherCancellationReasons } from '../client/components/mma/cancel/voucher/VoucherCancellationReasons'; import type { SupportTheGuardianButtonProps } from '../client/components/shared/SupportTheGuardianButton'; import type { OphanProduct } from './ophanTypes'; import type { @@ -290,7 +291,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { } }, cancellation: { - reasons: membershipCancellationReasons, + reasons: shuffledMembershipCancellationReasons, sfCaseProduct: 'Membership', startPageBody: membershipCancellationFlowStart, hideReasonTitlePrefix: true, @@ -345,12 +346,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { switch (reasonId) { case 'mma_financial_circumstances': case 'mma_value_for_money': - case 'mma_one_off': return 'You can support The Guardian’s independent journalism with a One-time contribution, from as little as £1 – and it only takes a minute.'; - case 'mma_wants_annual_contribution': - return 'You can support The Guardian’s independent journalism for the long term with an annual contribution.'; - case 'mma_wants_monthly_contribution': - return 'You can support The Guardian’s independent journalism for the long term with a monthly contribution.'; default: return undefined; } @@ -362,12 +358,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { switch (reasonId) { case 'mma_financial_circumstances': case 'mma_value_for_money': - case 'mma_one_off': return 'Make a One-time contribution'; - case 'mma_wants_annual_contribution': - return 'Make an annual contribution'; - case 'mma_wants_monthly_contribution': - return 'Make a monthly contribution'; default: return undefined; } @@ -511,7 +502,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { }, cancellation: { linkOnProductPage: true, - reasons: voucherCancellationReasons, + reasons: shuffledVoucherCancellationReasons, sfCaseProduct: 'Voucher Subscriptions', checkForOutstandingCredits: true, flowWrapper: physicalSubsCancellationFlowWrapper, @@ -583,7 +574,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { }, cancellation: { linkOnProductPage: true, - reasons: gwCancellationReasons, + reasons: shuffledGWCancellationReasons, sfCaseProduct: 'Guardian Weekly', checkForOutstandingCredits: true, flowWrapper: physicalSubsCancellationFlowWrapper, @@ -629,7 +620,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { }, cancellation: { linkOnProductPage: true, - reasons: gwCancellationReasons, + reasons: shuffledTierThreeCancellationReasons, sfCaseProduct: 'Tier Three', checkForOutstandingCredits: true, flowWrapper: physicalSubsCancellationFlowWrapper, @@ -668,7 +659,7 @@ export const PRODUCT_TYPES: { [productKey in ProductTypeKeys]: ProductType } = { ], cancellation: { linkOnProductPage: true, - reasons: digipackCancellationReasons, + reasons: shuffledDigipackCancellationReasons, sfCaseProduct: 'Digital Pack Subscriptions', startPageBody: digipackCancellationFlowStart, summaryReasonSpecificPara: () => undefined,