forked from mirrors/gecko-dev
MozReview-Commit-ID: LjrRXr1thc8 --HG-- rename : toolkit/components/payments/.eslintrc.js => browser/components/payments/.eslintrc.js rename : toolkit/components/payments/content/paymentDialogFrameScript.js => browser/components/payments/content/paymentDialogFrameScript.js rename : toolkit/components/payments/content/paymentDialogWrapper.css => browser/components/payments/content/paymentDialogWrapper.css rename : toolkit/components/payments/content/paymentDialogWrapper.js => browser/components/payments/content/paymentDialogWrapper.js rename : toolkit/components/payments/content/paymentDialogWrapper.xhtml => browser/components/payments/content/paymentDialogWrapper.xhtml rename : toolkit/components/payments/docs/index.rst => browser/components/payments/docs/index.rst rename : toolkit/components/payments/jar.mn => browser/components/payments/jar.mn rename : toolkit/components/payments/moz.build => browser/components/payments/moz.build rename : toolkit/components/payments/paymentUIService.js => browser/components/payments/paymentUIService.js rename : toolkit/components/payments/payments.manifest => browser/components/payments/payments.manifest rename : toolkit/components/payments/res/PaymentsStore.js => browser/components/payments/res/PaymentsStore.js rename : toolkit/components/payments/res/components/address-option.css => browser/components/payments/res/components/address-option.css rename : toolkit/components/payments/res/components/address-option.js => browser/components/payments/res/components/address-option.js rename : toolkit/components/payments/res/components/basic-card-option.css => browser/components/payments/res/components/basic-card-option.css rename : toolkit/components/payments/res/components/basic-card-option.js => browser/components/payments/res/components/basic-card-option.js rename : toolkit/components/payments/res/components/currency-amount.js => browser/components/payments/res/components/currency-amount.js rename : toolkit/components/payments/res/components/labelled-checkbox.js => browser/components/payments/res/components/labelled-checkbox.js rename : toolkit/components/payments/res/components/payment-details-item.css => browser/components/payments/res/components/payment-details-item.css rename : toolkit/components/payments/res/components/payment-details-item.js => browser/components/payments/res/components/payment-details-item.js rename : toolkit/components/payments/res/components/rich-option.js => browser/components/payments/res/components/rich-option.js rename : toolkit/components/payments/res/components/rich-select.css => browser/components/payments/res/components/rich-select.css rename : toolkit/components/payments/res/components/rich-select.js => browser/components/payments/res/components/rich-select.js rename : toolkit/components/payments/res/components/shipping-option.css => browser/components/payments/res/components/shipping-option.css rename : toolkit/components/payments/res/components/shipping-option.js => browser/components/payments/res/components/shipping-option.js rename : toolkit/components/payments/res/containers/address-picker.js => browser/components/payments/res/containers/address-picker.js rename : toolkit/components/payments/res/containers/basic-card-form.js => browser/components/payments/res/containers/basic-card-form.js rename : toolkit/components/payments/res/containers/order-details.css => browser/components/payments/res/containers/order-details.css rename : toolkit/components/payments/res/containers/order-details.js => browser/components/payments/res/containers/order-details.js rename : toolkit/components/payments/res/containers/payment-dialog.js => browser/components/payments/res/containers/payment-dialog.js rename : toolkit/components/payments/res/containers/payment-method-picker.js => browser/components/payments/res/containers/payment-method-picker.js rename : toolkit/components/payments/res/containers/shipping-option-picker.js => browser/components/payments/res/containers/shipping-option-picker.js rename : toolkit/components/payments/res/debugging.css => browser/components/payments/res/debugging.css rename : toolkit/components/payments/res/debugging.html => browser/components/payments/res/debugging.html rename : toolkit/components/payments/res/debugging.js => browser/components/payments/res/debugging.js rename : toolkit/components/payments/res/mixins/ObservedPropertiesMixin.js => browser/components/payments/res/mixins/ObservedPropertiesMixin.js rename : toolkit/components/payments/res/mixins/PaymentStateSubscriberMixin.js => browser/components/payments/res/mixins/PaymentStateSubscriberMixin.js rename : toolkit/components/payments/res/paymentRequest.css => browser/components/payments/res/paymentRequest.css rename : toolkit/components/payments/res/paymentRequest.js => browser/components/payments/res/paymentRequest.js rename : toolkit/components/payments/res/paymentRequest.xhtml => browser/components/payments/res/paymentRequest.xhtml rename : toolkit/components/payments/res/unprivileged-fallbacks.js => browser/components/payments/res/unprivileged-fallbacks.js rename : toolkit/components/payments/res/vendor/custom-elements.min.js => browser/components/payments/res/vendor/custom-elements.min.js rename : toolkit/components/payments/res/vendor/custom-elements.min.js.map => browser/components/payments/res/vendor/custom-elements.min.js.map rename : toolkit/components/payments/server.py => browser/components/payments/server.py rename : toolkit/components/payments/test/PaymentTestUtils.jsm => browser/components/payments/test/PaymentTestUtils.jsm rename : toolkit/components/payments/test/browser/.eslintrc.js => browser/components/payments/test/browser/.eslintrc.js rename : toolkit/components/payments/test/browser/blank_page.html => browser/components/payments/test/browser/blank_page.html rename : toolkit/components/payments/test/browser/browser.ini => browser/components/payments/test/browser/browser.ini rename : toolkit/components/payments/test/browser/browser_card_edit.js => browser/components/payments/test/browser/browser_card_edit.js rename : toolkit/components/payments/test/browser/browser_change_shipping.js => browser/components/payments/test/browser/browser_change_shipping.js rename : toolkit/components/payments/test/browser/browser_host_name.js => browser/components/payments/test/browser/browser_host_name.js rename : toolkit/components/payments/test/browser/browser_profile_storage.js => browser/components/payments/test/browser/browser_profile_storage.js rename : toolkit/components/payments/test/browser/browser_request_serialization.js => browser/components/payments/test/browser/browser_request_serialization.js rename : toolkit/components/payments/test/browser/browser_request_shipping.js => browser/components/payments/test/browser/browser_request_shipping.js rename : toolkit/components/payments/test/browser/browser_request_summary.js => browser/components/payments/test/browser/browser_request_summary.js rename : toolkit/components/payments/test/browser/browser_shippingaddresschange_error.js => browser/components/payments/test/browser/browser_shippingaddresschange_error.js rename : toolkit/components/payments/test/browser/browser_show_dialog.js => browser/components/payments/test/browser/browser_show_dialog.js rename : toolkit/components/payments/test/browser/browser_total.js => browser/components/payments/test/browser/browser_total.js rename : toolkit/components/payments/test/browser/head.js => browser/components/payments/test/browser/head.js rename : toolkit/components/payments/test/mochitest/.eslintrc.js => browser/components/payments/test/mochitest/.eslintrc.js rename : toolkit/components/payments/test/mochitest/formautofill/mochitest.ini => browser/components/payments/test/mochitest/formautofill/mochitest.ini rename : toolkit/components/payments/test/mochitest/formautofill/test_editCreditCard.html => browser/components/payments/test/mochitest/formautofill/test_editCreditCard.html rename : toolkit/components/payments/test/mochitest/mochitest.ini => browser/components/payments/test/mochitest/mochitest.ini rename : toolkit/components/payments/test/mochitest/payments_common.js => browser/components/payments/test/mochitest/payments_common.js rename : toolkit/components/payments/test/mochitest/test_ObservedPropertiesMixin.html => browser/components/payments/test/mochitest/test_ObservedPropertiesMixin.html rename : toolkit/components/payments/test/mochitest/test_PaymentStateSubscriberMixin.html => browser/components/payments/test/mochitest/test_PaymentStateSubscriberMixin.html rename : toolkit/components/payments/test/mochitest/test_PaymentsStore.html => browser/components/payments/test/mochitest/test_PaymentsStore.html rename : toolkit/components/payments/test/mochitest/test_address_picker.html => browser/components/payments/test/mochitest/test_address_picker.html rename : toolkit/components/payments/test/mochitest/test_basic_card_form.html => browser/components/payments/test/mochitest/test_basic_card_form.html rename : toolkit/components/payments/test/mochitest/test_currency_amount.html => browser/components/payments/test/mochitest/test_currency_amount.html rename : toolkit/components/payments/test/mochitest/test_labelled_checkbox.html => browser/components/payments/test/mochitest/test_labelled_checkbox.html rename : toolkit/components/payments/test/mochitest/test_order_details.html => browser/components/payments/test/mochitest/test_order_details.html rename : toolkit/components/payments/test/mochitest/test_payer_address_picker.html => browser/components/payments/test/mochitest/test_payer_address_picker.html rename : toolkit/components/payments/test/mochitest/test_payment_details_item.html => browser/components/payments/test/mochitest/test_payment_details_item.html rename : toolkit/components/payments/test/mochitest/test_payment_dialog.html => browser/components/payments/test/mochitest/test_payment_dialog.html rename : toolkit/components/payments/test/mochitest/test_payment_method_picker.html => browser/components/payments/test/mochitest/test_payment_method_picker.html rename : toolkit/components/payments/test/mochitest/test_rich_select.html => browser/components/payments/test/mochitest/test_rich_select.html rename : toolkit/components/payments/test/mochitest/test_shipping_option_picker.html => browser/components/payments/test/mochitest/test_shipping_option_picker.html rename : toolkit/components/payments/test/unit/.eslintrc.js => browser/components/payments/test/unit/.eslintrc.js rename : toolkit/components/payments/test/unit/head.js => browser/components/payments/test/unit/head.js rename : toolkit/components/payments/test/unit/test_response_creation.js => browser/components/payments/test/unit/test_response_creation.js rename : toolkit/components/payments/test/unit/xpcshell.ini => browser/components/payments/test/unit/xpcshell.ini
141 lines
4.4 KiB
JavaScript
141 lines
4.4 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* Basic checks to ensure that helpers constructing responses map their
|
|
* destructured arguments properly to the `init` methods. Full testing of the init
|
|
* methods is left to the DOM code.
|
|
*/
|
|
|
|
const DIALOG_WRAPPER_URI = "chrome://payments/content/paymentDialogWrapper.js";
|
|
let dialogGlobal = {};
|
|
Services.scriptloader.loadSubScript(DIALOG_WRAPPER_URI, dialogGlobal);
|
|
|
|
/**
|
|
* @param {Object} responseData with properties in the order matching `nsIBasicCardResponseData`
|
|
* init method args.
|
|
* @returns {string} serialized card data
|
|
*/
|
|
function serializeBasicCardResponseData(responseData) {
|
|
return [...Object.entries(responseData)].map(array => array.join(":")).join(";") + ";";
|
|
}
|
|
|
|
|
|
add_task(async function test_createBasicCardResponseData_basic() {
|
|
let expected = {
|
|
cardholderName: "John Smith",
|
|
cardNumber: "1234567890",
|
|
expiryMonth: "01",
|
|
expiryYear: "2017",
|
|
cardSecurityCode: "0123",
|
|
};
|
|
let actual = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData(expected);
|
|
let expectedSerialized = serializeBasicCardResponseData(expected);
|
|
Assert.equal(actual.data, expectedSerialized, "Check data");
|
|
});
|
|
|
|
add_task(async function test_createBasicCardResponseData_minimal() {
|
|
let expected = {
|
|
cardNumber: "1234567890",
|
|
};
|
|
let actual = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData(expected);
|
|
let expectedSerialized = serializeBasicCardResponseData(expected);
|
|
info(actual.data);
|
|
Assert.equal(actual.data, expectedSerialized, "Check data");
|
|
});
|
|
|
|
add_task(async function test_createBasicCardResponseData_withoutNumber() {
|
|
let data = {
|
|
cardholderName: "John Smith",
|
|
expiryMonth: "01",
|
|
expiryYear: "2017",
|
|
cardSecurityCode: "0123",
|
|
};
|
|
Assert.throws(() => dialogGlobal.paymentDialogWrapper.createBasicCardResponseData(data),
|
|
/NS_ERROR_FAILURE/,
|
|
"Check cardNumber is required");
|
|
});
|
|
|
|
function checkAddress(actual, expected) {
|
|
for (let [propName, propVal] of Object.entries(expected)) {
|
|
if (propName == "addressLines") {
|
|
// Note the singular vs. plural here.
|
|
Assert.equal(actual.addressLine.length, propVal.length, "Check number of address lines");
|
|
for (let [i, line] of expected.addressLines.entries()) {
|
|
Assert.equal(actual.addressLine.queryElementAt(i, Ci.nsISupportsString).data, line,
|
|
`Check ${propName} line ${i}`);
|
|
}
|
|
continue;
|
|
}
|
|
Assert.equal(actual[propName], propVal, `Check ${propName}`);
|
|
}
|
|
}
|
|
|
|
add_task(async function test_createPaymentAddress_minimal() {
|
|
let data = {
|
|
country: "CA",
|
|
};
|
|
let actual = dialogGlobal.paymentDialogWrapper.createPaymentAddress(data);
|
|
checkAddress(actual, data);
|
|
});
|
|
|
|
add_task(async function test_createPaymentAddress_basic() {
|
|
let data = {
|
|
country: "CA",
|
|
addressLines: [
|
|
"123 Sesame Street",
|
|
"P.O. Box ABC",
|
|
],
|
|
region: "ON",
|
|
city: "Delhi",
|
|
dependentLocality: "N/A",
|
|
postalCode: "94041",
|
|
sortingCode: "1234",
|
|
languageCode: "en-CA",
|
|
organization: "Mozilla Corporation",
|
|
recipient: "John Smith",
|
|
phone: "+15195555555",
|
|
};
|
|
let actual = dialogGlobal.paymentDialogWrapper.createPaymentAddress(data);
|
|
checkAddress(actual, data);
|
|
});
|
|
|
|
add_task(async function test_createShowResponse_basic() {
|
|
let requestId = "876hmbvfd45hb";
|
|
dialogGlobal.paymentDialogWrapper.request = {
|
|
requestId,
|
|
};
|
|
|
|
let cardData = {
|
|
cardholderName: "John Smith",
|
|
cardNumber: "1234567890",
|
|
expiryMonth: "01",
|
|
expiryYear: "2099",
|
|
cardSecurityCode: "0123",
|
|
};
|
|
let methodData = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData(cardData);
|
|
|
|
let responseData = {
|
|
acceptStatus: Ci.nsIPaymentActionResponse.PAYMENT_ACCEPTED,
|
|
methodName: "basic-card",
|
|
methodData,
|
|
payerName: "My Name",
|
|
payerEmail: "my.email@example.com",
|
|
payerPhone: "+15195555555",
|
|
};
|
|
let actual = dialogGlobal.paymentDialogWrapper.createShowResponse(responseData);
|
|
for (let [propName, propVal] of Object.entries(actual)) {
|
|
if (typeof(propVal) != "string") {
|
|
continue;
|
|
}
|
|
if (propName == "requestId") {
|
|
Assert.equal(propVal, requestId, `Check ${propName}`);
|
|
continue;
|
|
}
|
|
if (propName == "data") {
|
|
Assert.equal(propVal, serializeBasicCardResponseData(cardData), `Check ${propName}`);
|
|
continue;
|
|
}
|
|
|
|
Assert.equal(propVal, responseData[propName], `Check ${propName}`);
|
|
}
|
|
});
|