diff --git a/content/messages/ES/short_term_no_amount.json b/content/messages/ES/short_term_no_amount.json
index f77b86dd90..8375b46ba2 100644
--- a/content/messages/ES/short_term_no_amount.json
+++ b/content/messages/ES/short_term_no_amount.json
@@ -1,10 +1,10 @@
{
"meta": {
"offerCountry": "ES",
- "offerType": "PAY_LATER_SHORT_TERM",
- "messageType": "PLST_NA",
+ "offerType": "GENERIC",
+ "messageType": "GENERIC",
"offerTerm": "{total_payments}",
- "lander": "",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
"variables": {
"offer_id": "${CREDIT_OFFERS_DS.offer_id}",
"vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
@@ -14,10 +14,7 @@
"formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
}
},
-
"headline": [["Compra ahora y paga después.", ["default"]]],
-
"subHeadline": [],
-
"disclaimer": [["Más información", ["default"]]]
}
diff --git a/content/messages/FR/generic.json b/content/messages/FR/generic.json
new file mode 100644
index 0000000000..59eff3e947
--- /dev/null
+++ b/content/messages/FR/generic.json
@@ -0,0 +1,22 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "GENERIC",
+ "messageType": "GENERIC",
+ "offerTerm": "{total_payments}",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "experiment_id": "{experiment_id}",
+ "experiment_treatment_id": "{experiment_treatment_id}",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [["Payez en plusieurs fois.", ["default"]]],
+ "subHeadline": [],
+ "disclaimer": [["En savoir plus", ["default"]]]
+}
diff --git a/content/messages/FR/long_term_nq.json b/content/messages/FR/long_term_nq.json
new file mode 100644
index 0000000000..77983bd4cb
--- /dev/null
+++ b/content/messages/FR/long_term_nq.json
@@ -0,0 +1,29 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "PAY_LATER_LONG_TERM",
+ "offerTerm": "{total_payments}",
+ "messageType": "PLLT_NQ_GZ",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [
+ ["Payez en plusieurs fois.", ["default", "xsmall"]],
+ ["Payez en plusieurs fois.", ["xsmall.2"]],
+ [
+ "Payez en plusieurs échéances pour vos achats de {formatted_min_amount} à {formatted_max_amount}.",
+ ["small", "medium", "large", "xlarge"]
+ ]
+ ],
+ "subHeadline": [],
+ "disclaimer": [
+ ["En savoir plusEn savoir plus", ["default"]]
+ ]
+}
diff --git a/content/messages/FR/long_term_q_gtz.json b/content/messages/FR/long_term_q_gtz.json
new file mode 100644
index 0000000000..5d4511e21c
--- /dev/null
+++ b/content/messages/FR/long_term_q_gtz.json
@@ -0,0 +1,26 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "PAY_LATER_LONG_TERM",
+ "messageType": "PLLT_MQ_GZ",
+ "offerTerm": "{total_payments}",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [
+ ["Payez en plusieurs fois.", ["default", "xsmall"]],
+ ["Payez en plusieurs fois.", ["xsmall.2"]],
+ [["Payez jusqu'à {total_payments} échéances."], ["small", "medium", "large", "xlarge"]]
+ ],
+ "subHeadline": [],
+ "disclaimer": [
+ ["En savoir plusEn savoir plus", ["default"]]
+ ]
+}
diff --git a/content/messages/IT/short_term_no_amount.json b/content/messages/IT/short_term_no_amount.json
index 6da05c2065..8b5b5cbaf8 100644
--- a/content/messages/IT/short_term_no_amount.json
+++ b/content/messages/IT/short_term_no_amount.json
@@ -1,8 +1,8 @@
{
"meta": {
"offerCountry": "IT",
- "offerType": "PAY_LATER_SHORT_TERM",
- "messageType": "PLST_NA",
+ "offerType": "GENERIC",
+ "messageType": "GENERIC",
"offerTerm": "{total_payments}",
"lander": "",
"variables": {
diff --git a/demo/helpers/accounts.js b/demo/helpers/accounts.js
index 6ced2387c2..e53a3899d3 100644
--- a/demo/helpers/accounts.js
+++ b/demo/helpers/accounts.js
@@ -72,8 +72,11 @@ const accounts = [
// 'DEV00000GBPLQ',
// FR
- // 'DEV000000FRPL',
- // 'DEV00000FRPLQ'
+ // DEV0FRGENERIC
+ // DEV000000FRPL
+ // DEV00000FRPLQ
+ // DEV0000FRPLTQ
+ // DEV000FRPLTNQ
// ES
// 'DEV00000ESPLQ',
diff --git a/src/server/locale/FR/mutations/generic.js b/src/server/locale/FR/mutations/generic.js
new file mode 100644
index 0000000000..4f2b4cf90e
--- /dev/null
+++ b/src/server/locale/FR/mutations/generic.js
@@ -0,0 +1,162 @@
+import Logo from '../../../message/logos';
+import {
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ logo20x1,
+ xSmallFallback
+} from '../../../message/mediaQueries';
+import { textLogoMutations, flexLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['default'],
+ breaks: ['achats']
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1()]
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 33, textSize, 'ES'),
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 16)
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 17.4),
+ setLogoTop(textSize * 41.5),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25)
+ ],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 17.4),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25)
+ ],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 36.5, textSize, 'ES'),
+ xSmallFallback(textSize * 17.75),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25)
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [xSmallFallback(textSize * 20)],
+ logo: false,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [xSmallFallback(textSize * 20), `.message__logo { width: ${textSize * 4}px }`],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/src/server/locale/FR/mutations/index.js b/src/server/locale/FR/mutations/index.js
index 63bd77f828..104d9bc44e 100644
--- a/src/server/locale/FR/mutations/index.js
+++ b/src/server/locale/FR/mutations/index.js
@@ -1,15 +1,24 @@
// mutations import here.
+import generic from './generic';
+import longTermQ from './long_term_q_gtz';
+import longTermNq from './long_term_nq';
import gpl from './gpl';
import gplq from './gplq';
export default function getMutations(id, type) {
switch (id) {
+ case 'PLLT_MQ_GZ':
+ return longTermQ[type];
+ case 'PLLT_NQ_GZ':
+ return longTermNq[type];
case 'GPLQ':
case 'PLST_SQ':
return gplq[type];
case 'GPL':
case 'PLST_NQ':
- default:
return gpl[type];
+ case 'GENERIC':
+ default:
+ return generic[type];
}
}
diff --git a/src/server/locale/FR/mutations/long_term_nq.js b/src/server/locale/FR/mutations/long_term_nq.js
new file mode 100644
index 0000000000..3c2b8f4c43
--- /dev/null
+++ b/src/server/locale/FR/mutations/long_term_nq.js
@@ -0,0 +1,211 @@
+import Logo from '../../../message/logos';
+import {
+ xSmallFallback,
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ addPeriod,
+ logo20x1
+} from '../../../message/mediaQueries';
+import { flexLogoMutations, textLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['xsmall']
+ },
+ {
+ sizes: ['medium'],
+ breaks: ['de']
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default'],
+ styles: ['.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1(), '.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 51, textSize, 'ES'),
+ xSmallFallback(textSize * 19.5),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 20),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 16),
+ setLogoTop(textSize * 51),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 46, textSize, 'ES'),
+ xSmallFallback(textSize * 19),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 21.6),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: false,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['después.'],
+ replace: [['después.', 'después']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 21.6),
+ `.message__logo { width: ${textSize * 4}px }`,
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['después.'],
+ replace: [['después.', 'después']]
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/src/server/locale/FR/mutations/long_term_q_gtz.js b/src/server/locale/FR/mutations/long_term_q_gtz.js
new file mode 100644
index 0000000000..62d48dabc4
--- /dev/null
+++ b/src/server/locale/FR/mutations/long_term_q_gtz.js
@@ -0,0 +1,209 @@
+import Logo from '../../../message/logos';
+import {
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ logo20x1,
+ xSmallFallback,
+ addPeriod
+} from '../../../message/mediaQueries';
+import { flexLogoMutations, textLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['xsmall']
+ },
+ {
+ sizes: ['medium'],
+ breaks: ['hasta']
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default'],
+ styles: ['.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1(), '.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 42, textSize, 'ES'),
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 16),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['hasta']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${
+ textSize * 18.5
+ }px) { .message__headline > .tag--medium > span > span:first-child { white-space: normal; } }`,
+ xSmallFallback(textSize * 12),
+ setLogoTop(textSize * 40),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${
+ textSize * 18.5
+ }px) { .message__headline > .tag--medium > span > span:first-child { white-space: normal; } }`,
+ xSmallFallback(textSize * 12),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['hasta']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 34, textSize, 'ES'),
+ xSmallFallback(textSize * 11.5),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['hasta']
+ },
+ {
+ tag: 'xsmall',
+ br: ['ahora,']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 20),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: false,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['plazos'],
+ replace: [['plazos.', 'plazos ']]
+ },
+ {
+ tag: 'xsmall',
+ br: ['después.'],
+ replace: [['después.', 'después']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 18),
+ `.message__logo { width: ${textSize * 4}px }`,
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['plazos'],
+ replace: [['plazos.', 'plazos ']]
+ },
+ {
+ tag: 'xsmall',
+ replace: [['después.', 'después']],
+ br: ['después']
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/tests/functional/spec/FR/accounts.js b/tests/functional/spec/FR/accounts.js
index 8acdb22bb9..db3542df77 100644
--- a/tests/functional/spec/FR/accounts.js
+++ b/tests/functional/spec/FR/accounts.js
@@ -1 +1 @@
-export default ['DEV000000FRPL', 'DEV00000FRPLQ'];
+export default ['DEV0FRGENERIC', 'DEV000000FRPL', 'DEV00000FRPLQ', 'DEV0000FRPLTQ', 'DEV000FRPLTNQ'];
diff --git a/tests/functional/v2/config/FR/DEV_FR_LONG_TERM.js b/tests/functional/v2/config/FR/DEV_FR_LONG_TERM.js
new file mode 100644
index 0000000000..56d2110c28
--- /dev/null
+++ b/tests/functional/v2/config/FR/DEV_FR_LONG_TERM.js
@@ -0,0 +1,42 @@
+export const DEV_FR_LONG_TERM = {
+ testFileName: 'longTerm',
+ country: 'FR',
+ description: 'FR merchant eligible for long term only',
+ minAmount: 60,
+ maxAmount: 2999,
+ amounts: [
+ {
+ value: '0.00',
+ message: 'Non-qualifying Pay Monthly',
+ expectedValue: 'Paga en 6, 12 o 24 plazos',
+ modalContent: {
+ offerHeadline: null,
+ offerFieldValues: null,
+ belowMinAmountErr: 'Introduce un importe igual o superior a 60 €.',
+ aprDisclaimer: 'Tipo de interes nominal (TIN) fijo anual del 0%'
+ }
+ },
+ {
+ value: '60.00',
+ message: 'Qualifying Pay Monthly',
+ expectedValue: 'Paga en 6, 12 o 24 plazos',
+ modalContent: {
+ offerHeadline: '2,50 €/mes',
+ updatedOfferHeadline: '20,83 €/mes',
+ offerFieldValues: ['60,00 €', '0,00 €', '60,00 €'],
+ aprDisclaimer: 'Tipo de interes nominal (TIN) fijo anual del 0%'
+ }
+ },
+ {
+ value: '2999.01',
+ message: 'Non-qualifying Pay Monthly',
+ expectedValue: 'Paga en 6, 12 o 24 plazos',
+ modalContent: {
+ offerHeadline: null,
+ offerFieldValues: null,
+ aboveMaxAmountErr: 'Introduce un importe inferior a 2.999 €.',
+ aprDisclaimer: 'Tipo de interes nominal (TIN) fijo anual del 0%'
+ }
+ }
+ ]
+};
diff --git a/tests/functional/v2/config/FR/DEV_FR_MULTI.js b/tests/functional/v2/config/FR/DEV_FR_MULTI.js
new file mode 100644
index 0000000000..44199bdbf4
--- /dev/null
+++ b/tests/functional/v2/config/FR/DEV_FR_MULTI.js
@@ -0,0 +1,17 @@
+export const DEV_FR_MULTI = {
+ testFileName: 'multiProduct',
+ country: 'FR',
+ description: 'FR Multi-product merchant',
+ amounts: [
+ {
+ value: '0.00',
+ message: 'Product list modal functionality',
+ expectedValue: 'Compra ahora y paga después',
+ modalContent: {
+ headline: 'Compra ahora y paga después',
+ shortTerm: 'Paga en 3 plazos',
+ longTerm: 'Paga en 6, 12 o 24 plazos'
+ }
+ }
+ ]
+};
diff --git a/tests/functional/v2/config/FR/index.js b/tests/functional/v2/config/FR/index.js
index 8a228ba3b8..59580ff0c8 100644
--- a/tests/functional/v2/config/FR/index.js
+++ b/tests/functional/v2/config/FR/index.js
@@ -1 +1,3 @@
export { DEV_FR_SHORT_TERM } from './DEV_FR_SHORT_TERM';
+export { DEV_FR_LONG_TERM } from './DEV_FR_LONG_TERM';
+export { DEV_FR_MULTI } from './DEV_FR_MULTI';
diff --git a/utils/devServerProxy/config/ES/index.js b/utils/devServerProxy/config/ES/index.js
index 2ad6309ff3..9f695dd6df 100644
--- a/utils/devServerProxy/config/ES/index.js
+++ b/utils/devServerProxy/config/ES/index.js
@@ -22,7 +22,7 @@ export default {
{
amount: 0,
template: 'short_term_no_amount.json',
- product: 'PAY_LATER_SHORT_TERM'
+ product: 'GENERIC'
},
{
amount: 0.01,
diff --git a/utils/devServerProxy/config/FR/index.js b/utils/devServerProxy/config/FR/index.js
index f08006818d..f1db9ccd20 100644
--- a/utils/devServerProxy/config/FR/index.js
+++ b/utils/devServerProxy/config/FR/index.js
@@ -1,6 +1,85 @@
// Note that these values are solely mock structures for development purposes
// that are not guaranteed to be reflective of what is in production
export default {
+ DEV_FR_MULTI: {
+ country: 'FR',
+ modalViews: [
+ {
+ template: 'product_list.json',
+ product: 'PRODUCT_LIST'
+ },
+ {
+ template: 'short_term.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ template: 'long_term.json',
+ offersTemplate: 'long_term.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ messageThresholds: [
+ {
+ amount: 0,
+ template: 'generic.json',
+ product: 'GENERIC'
+ },
+ {
+ amount: 0.01,
+ template: 'short_term_nq.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ amount: 30,
+ template: 'short_term_q.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ amount: 500,
+ template: 'long_term_q.json',
+ product: 'PAY_LATER_LONG_TERM'
+ },
+ {
+ amount: 2999.01,
+ template: 'long_term_nq.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ offers: {
+ PAY_LATER_SHORT_TERM: [
+ {
+ totalPayments: 3,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 30,
+ maxAmount: 2000
+ }
+ ],
+ PAY_LATER_LONG_TERM: [
+ {
+ totalPayments: 6,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 60,
+ maxAmount: 2999
+ },
+ {
+ totalPayments: 12,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 120,
+ maxAmount: 50299900
+ },
+ {
+ totalPayments: 24,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 240,
+ maxAmount: 2999
+ }
+ ]
+ }
+ },
DEV_FR_SHORT_TERM: {
country: 'FR',
modalViews: [
@@ -37,5 +116,52 @@ export default {
}
]
}
+ },
+ DEV_FR_LONG_TERM: {
+ country: 'FR',
+ modalViews: [
+ {
+ template: 'long_term.json',
+ offersTemplate: 'long_term.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ messageThresholds: [
+ {
+ amount: 60,
+ template: 'long_term_q_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ },
+ {
+ amount: 2999.01,
+ template: 'long_term_nq.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ offers: {
+ PAY_LATER_LONG_TERM: [
+ {
+ totalPayments: 6,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 60,
+ maxAmount: 2999
+ },
+ {
+ totalPayments: 12,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 60,
+ maxAmount: 2999
+ },
+ {
+ totalPayments: 24,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 60,
+ maxAmount: 2999
+ }
+ ]
+ }
}
};
diff --git a/utils/devServerProxy/config/IT/index.js b/utils/devServerProxy/config/IT/index.js
index 005425f5aa..59dec6f741 100644
--- a/utils/devServerProxy/config/IT/index.js
+++ b/utils/devServerProxy/config/IT/index.js
@@ -22,7 +22,7 @@ export default {
{
amount: 0,
template: 'short_term_no_amount.json',
- product: 'PAY_LATER_SHORT_TERM'
+ product: 'GENERIC'
},
{
amount: 0.01,
diff --git a/utils/devServerProxy/config/devAccounts.config.js b/utils/devServerProxy/config/devAccounts.config.js
index d786cb5a12..65dfdbe733 100644
--- a/utils/devServerProxy/config/devAccounts.config.js
+++ b/utils/devServerProxy/config/devAccounts.config.js
@@ -96,8 +96,11 @@ export default {
DEV000000GBPL: ['GB', ['short_term'], 'pl'],
DEV00000GBPLQ: ['GB', ['short_term'], 'plq'],
+ DEV0FRGENERIC: ['FR', ['short_term'], 'generic'],
DEV000000FRPL: ['FR', ['short_term'], 'gpl'],
DEV00000FRPLQ: ['FR', ['short_term'], 'gplq'],
+ DEV0000FRPLTQ: ['FR', ['long_term'], 'long_term_q_gtz'],
+ DEV000FRPLTNQ: ['FR', ['long_term'], 'long_term_nq'],
DEV000000AUPL: ['AU', ['short_term'], 'gpl'],
DEV00000AUPLQ: ['AU', ['short_term'], 'gplq'],