fune/browser/components/payments/test/mochitest/test_payment_method_picker.html
Matthew Noorenberghe c0d0384218 Bug 1457287 - Move Payment Request UI code to browser/. r=jaws
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
2018-04-27 07:20:32 -07:00

166 lines
5.7 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
Test the payment-method-picker component
-->
<head>
<meta charset="utf-8">
<title>Test the payment-method-picker component</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="payments_common.js"></script>
<script src="../../res/vendor/custom-elements.min.js"></script>
<script src="../../res/unprivileged-fallbacks.js"></script>
<link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
<link rel="stylesheet" type="text/css" href="../../res/components/basic-card-option.css"/>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<p id="display">
<payment-method-picker id="picker1"
selected-state-key="selectedPaymentCard"></payment-method-picker>
</p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
<script type="module">
/** Test the payment-method-picker component **/
/* import-globals-from payments_common.js */
import "../../res/components/basic-card-option.js";
import "../../res/containers/payment-method-picker.js";
let picker1 = document.getElementById("picker1");
add_task(async function test_empty() {
ok(picker1, "Check picker1 exists");
let {savedBasicCards} = picker1.requestStore.getState();
is(Object.keys(savedBasicCards).length, 0, "Check empty initial state");
is(picker1.dropdown.popupBox.children.length, 0, "Check dropdown is empty");
});
add_task(async function test_initialSet() {
picker1.requestStore.setState({
savedBasicCards: {
"48bnds6854t": {
"cc-exp": "2017-02",
"cc-exp-month": 2,
"cc-exp-year": 2017,
"cc-name": "John Doe",
"cc-number": "************9999",
"guid": "48bnds6854t",
},
"68gjdh354j": {
"cc-exp": "2017-08",
"cc-exp-month": 8,
"cc-exp-year": 2017,
"cc-name": "J Smith",
"cc-number": "***********1234",
"guid": "68gjdh354j",
},
},
});
await asyncElementRendered();
let options = picker1.dropdown.popupBox.children;
is(options.length, 2, "Check dropdown has both cards");
ok(options[0].textContent.includes("John Doe"), "Check first card");
ok(options[1].textContent.includes("J Smith"), "Check second card");
});
add_task(async function test_update() {
picker1.requestStore.setState({
savedBasicCards: {
"48bnds6854t": {
// Same GUID, different values to trigger an update
"cc-exp": "2017-09",
"cc-exp-month": 9,
"cc-exp-year": 2017,
// cc-name was cleared which means it's not returned
"cc-number": "************9876",
"guid": "48bnds6854t",
},
"68gjdh354j": {
"cc-exp": "2017-08",
"cc-exp-month": 8,
"cc-exp-year": 2017,
"cc-name": "J Smith",
"cc-number": "***********1234",
"guid": "68gjdh354j",
},
},
});
await asyncElementRendered();
let options = picker1.dropdown.popupBox.children;
is(options.length, 2, "Check dropdown still has both cards");
ok(!options[0].textContent.includes("John Doe"), "Check cleared first cc-name");
ok(options[0].textContent.includes("9876"), "Check updated first cc-number");
ok(options[0].textContent.includes("09"), "Check updated first exp-month");
ok(options[1].textContent.includes("J Smith"), "Check second card is the same");
});
add_task(async function test_change_selected_card() {
let options = picker1.dropdown.popupBox.children;
let selectedOption = picker1.dropdown.selectedOption;
is(selectedOption, null, "Should default to no selected option");
let {
selectedPaymentCard,
selectedPaymentCardSecurityCode,
} = picker1.requestStore.getState();
is(selectedPaymentCard, null, "store should have no option selected");
is(selectedPaymentCardSecurityCode, null, "store should have no security code");
await SimpleTest.promiseFocus();
let codeFocusPromise = new Promise(resolve => {
picker1.securityCodeInput.addEventListener("focus", resolve, {once: true});
});
picker1.dropdown.click();
options[1].click();
await asyncElementRendered();
await codeFocusPromise;
ok(true, "Focused the security code field");
ok(!picker1.open, "Picker should be closed");
selectedOption = picker1.dropdown.selectedOption;
is(selectedOption, options[1], "Selected option should now be the second option");
selectedPaymentCard = picker1.requestStore.getState().selectedPaymentCard;
is(selectedPaymentCard, selectedOption.guid, "store should have second option selected");
selectedPaymentCardSecurityCode = picker1.requestStore.getState().selectedPaymentCardSecurityCode;
is(selectedPaymentCardSecurityCode, null, "store should have empty security code");
let stateChangePromise = promiseStateChange(picker1.requestStore);
// Type in the security code field
sendString("836");
sendKey("Tab");
let state = await stateChangePromise;
ok(state.selectedPaymentCardSecurityCode, "836", "Check security code in state");
});
add_task(async function test_delete() {
picker1.requestStore.setState({
savedBasicCards: {
// 48bnds6854t was deleted
"68gjdh354j": {
"cc-exp": "2017-08",
"cc-exp-month": 8,
"cc-exp-year": 2017,
"cc-name": "J Smith",
"cc-number": "***********1234",
"guid": "68gjdh354j",
},
},
});
await asyncElementRendered();
let options = picker1.dropdown.popupBox.children;
is(options.length, 1, "Check dropdown has one remaining card");
ok(options[0].textContent.includes("J Smith"), "Check remaining card");
});
</script>
</body>
</html>