Skip to content

Commit

Permalink
Merge pull request #17656 from mozilla/fxa-10436-sp2-l10n-fixes
Browse files Browse the repository at this point in the history
fix(payments-legacy): support cms localization
  • Loading branch information
StaberindeZA authored Sep 23, 2024
2 parents c723874 + b5a67ce commit cfac715
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 16 deletions.
36 changes: 35 additions & 1 deletion libs/payments/legacy/src/lib/stripe-mapper.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,9 @@ describe('StripeMapperService', () => {
expect(nonMatchingPlans[0].split(' - ')[1]).toBe('webIconURL');
});

it('should return data from cms', async () => {
it('should return data from cms default locale if no localization data is available', async () => {
const expected = PurchaseWithDetailsOfferingContentTransformedFactory();
expected.purchaseDetails.data.attributes.localizations.data = [];
mockCMSConfigUtil.transformedPurchaseWithCommonContentForPlanId.mockReturnValueOnce(
expected
);
Expand Down Expand Up @@ -178,6 +179,39 @@ describe('StripeMapperService', () => {
expect(nonMatchingPlans).toHaveLength(0);
});

it('should return data from cms for locale when available', async () => {
const expected = PurchaseWithDetailsOfferingContentTransformedFactory();
mockCMSConfigUtil.transformedPurchaseWithCommonContentForPlanId.mockReturnValueOnce(
expected
);
const productMetadata = {
productSet: 'set',
productOrder: 'order',
};
const stripePlan = StripePlanFactory() as Stripe.Plan;
stripePlan.product = StripeProductFactory({
metadata: productMetadata,
});
const { mappedPlans, nonMatchingPlans } =
await stripeMapper.mapCMSToStripePlans([stripePlan], 'en', false);
const actualProduct = mappedPlans[0].product as Stripe.Product;
expect(mappedPlans[0].metadata?.['webIconURL']).toBe(
expected.purchaseDetails.data.attributes.localizations.data[0]
.attributes.webIcon
);
expect(actualProduct.metadata?.['webIconURL']).toBe(
expected.purchaseDetails.data.attributes.localizations.data[0]
.attributes.webIcon
);
expect(actualProduct.metadata?.['productSet']).toBe(
productMetadata.productSet
);
expect(actualProduct.metadata?.['productOrder']).toBe(
productMetadata.productOrder
);
expect(nonMatchingPlans).toHaveLength(0);
});

it('should return data from CMS and not error on locale plan', async () => {
const expected = PurchaseWithDetailsOfferingContentTransformedFactory({
purchaseDetails: {
Expand Down
20 changes: 15 additions & 5 deletions libs/payments/legacy/src/lib/stripe-mapper.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,23 @@ export class StripeMapperService {
continue;
}

const commonContent =
cmsConfigData.offering.data.attributes.commonContent;
const purchaseDetails = cmsConfigData.purchaseDetails;
const commonContentAttributes =
cmsConfigData.offering.data.attributes.commonContent.data.attributes;
const commonContentAttributesLocalized = commonContentAttributes
.localizations.data.length
? commonContentAttributes.localizations.data[0].attributes
: commonContentAttributes;

const purchaseDetailsAttributes =
cmsConfigData.purchaseDetails.data.attributes;
const purchaseDetailsLocalizedAttributes = purchaseDetailsAttributes
.localizations.data.length
? purchaseDetailsAttributes.localizations.data[0].attributes
: purchaseDetailsAttributes;

const planMapper = new PlanMapperUtil(
commonContent.data.attributes,
purchaseDetails.data.attributes,
commonContentAttributesLocalized,
purchaseDetailsLocalizedAttributes,
mergedStripeMetadata,
cmsEnabled
);
Expand Down
1 change: 1 addition & 0 deletions packages/fxa-auth-server/bin/key_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ async function run(config) {
const strapiClient = new StrapiClient(strapiClientConfig, firestore);
const productConfigurationManager = new ProductConfigurationManager(
strapiClient,
priceManager,
statsd
);
Container.set(ProductConfigurationManager, productConfigurationManager);
Expand Down
15 changes: 5 additions & 10 deletions packages/fxa-auth-server/test/local/payments/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ const {
const {
ProductConfigurationManager,
PurchaseWithDetailsOfferingContentTransformedFactory,
PurchaseDetailsTransformedFactory,
} = require('@fxa/shared/cms');

const customer1 = require('./fixtures/stripe/customer1.json');
Expand Down Expand Up @@ -3426,15 +3425,11 @@ describe('#integration - StripeHelper', () => {
const newWebIconURL = 'http://strapi.example/webicon';
const mockCMSConfigUtil = {
transformedPurchaseWithCommonContentForPlanId: (planId) => {
return PurchaseWithDetailsOfferingContentTransformedFactory({
purchaseDetails: {
data: {
attributes: PurchaseDetailsTransformedFactory({
webIcon: newWebIconURL,
}),
},
},
});
const mockValue =
PurchaseWithDetailsOfferingContentTransformedFactory();
mockValue.purchaseDetails.data.attributes.webIcon = newWebIconURL;
mockValue.purchaseDetails.data.attributes.localizations.data = [];
return mockValue;
},
};
const mockProductConfigurationManager = {
Expand Down

0 comments on commit cfac715

Please sign in to comment.