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
174 lines
5.6 KiB
HTML
174 lines
5.6 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
Test the payment-dialog custom element
|
|
-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test the payment-dialog element</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
|
|
<script src="sinon-2.3.2.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="/tests/SimpleTest/test.css"/>
|
|
<link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
|
|
</head>
|
|
<body>
|
|
<p id="display">
|
|
<iframe id="templateFrame" src="../../res/paymentRequest.xhtml" width="0" height="0"></iframe>
|
|
</p>
|
|
<div id="content" style="display: none">
|
|
|
|
</div>
|
|
<pre id="test">
|
|
</pre>
|
|
<script type="module">
|
|
/** Test the payment-dialog element **/
|
|
|
|
/* global sinon */
|
|
/* import-globals-from payments_common.js */
|
|
|
|
import PaymentDialog from "../../res/containers/payment-dialog.js";
|
|
|
|
let el1;
|
|
|
|
let completionStates = [
|
|
["processing", "Processing"],
|
|
["success", "Done"],
|
|
["fail", "Fail"],
|
|
["unknown", "Unknown"],
|
|
];
|
|
|
|
/* test that:
|
|
the view-all-items button exists
|
|
that clicking it changes the state on the store
|
|
that clicking it causes render to be called
|
|
|
|
that order details element's hidden state matches the state on the store
|
|
*/
|
|
|
|
add_task(async function setup_once() {
|
|
let templateFrame = document.getElementById("templateFrame");
|
|
await SimpleTest.promiseFocus(templateFrame.contentWindow);
|
|
|
|
let displayEl = document.getElementById("display");
|
|
// Import the templates from the real shipping dialog to avoid duplication.
|
|
for (let template of templateFrame.contentDocument.querySelectorAll("template")) {
|
|
let imported = document.importNode(template, true);
|
|
displayEl.appendChild(imported);
|
|
}
|
|
|
|
el1 = new PaymentDialog();
|
|
displayEl.appendChild(el1);
|
|
|
|
sinon.spy(el1, "render");
|
|
sinon.spy(el1, "stateChangeCallback");
|
|
});
|
|
|
|
async function setup() {
|
|
await el1.requestStore.setState({
|
|
changesPrevented: false,
|
|
completionState: "initial",
|
|
orderDetailsShowing: false,
|
|
});
|
|
|
|
el1.render.reset();
|
|
el1.stateChangeCallback.reset();
|
|
}
|
|
|
|
add_task(async function test_initialState() {
|
|
await setup();
|
|
let initialState = el1.requestStore.getState();
|
|
let elDetails = el1._orderDetailsOverlay;
|
|
|
|
is(initialState.orderDetailsShowing, false, "orderDetailsShowing is initially false");
|
|
ok(elDetails.hasAttribute("hidden"), "Check details are hidden");
|
|
is(initialState.page.id, "payment-summary", "Check initial page");
|
|
});
|
|
|
|
add_task(async function test_viewAllButton() {
|
|
await setup();
|
|
|
|
let elDetails = el1._orderDetailsOverlay;
|
|
let button = el1._viewAllButton;
|
|
|
|
button.click();
|
|
await asyncElementRendered();
|
|
|
|
ok(el1.stateChangeCallback.calledOnce, "stateChangeCallback called once");
|
|
ok(el1.render.calledOnce, "render called once");
|
|
|
|
let state = el1.requestStore.getState();
|
|
is(state.orderDetailsShowing, true, "orderDetailsShowing becomes true");
|
|
ok(!elDetails.hasAttribute("hidden"), "Check details aren't hidden");
|
|
});
|
|
|
|
add_task(async function test_changesPrevented() {
|
|
await setup();
|
|
let state = el1.requestStore.getState();
|
|
is(state.changesPrevented, false, "changesPrevented is initially false");
|
|
let disabledOverlay = document.getElementById("disabled-overlay");
|
|
ok(disabledOverlay.hidden, "Overlay should initially be hidden");
|
|
await el1.requestStore.setState({changesPrevented: true});
|
|
await asyncElementRendered();
|
|
ok(!disabledOverlay.hidden, "Overlay should prevent changes");
|
|
});
|
|
|
|
add_task(async function test_completionState() {
|
|
await setup();
|
|
let state = el1.requestStore.getState();
|
|
is(state.completionState, "initial", "completionState is initially initial");
|
|
let payButton = document.getElementById("pay");
|
|
is(payButton.textContent, "Pay", "Check default label");
|
|
ok(!payButton.disabled, "Button is enabled");
|
|
for (let [completionState, label] of completionStates) {
|
|
await el1.requestStore.setState({completionState});
|
|
await asyncElementRendered();
|
|
is(payButton.textContent, label, "Check payButton label");
|
|
ok(!payButton.disabled, "Button is still enabled");
|
|
}
|
|
});
|
|
|
|
add_task(async function test_completionStateChangesPrevented() {
|
|
await setup();
|
|
let state = el1.requestStore.getState();
|
|
is(state.completionState, "initial", "completionState is initially initial");
|
|
is(state.changesPrevented, false, "changesPrevented is initially false");
|
|
let payButton = document.getElementById("pay");
|
|
is(payButton.textContent, "Pay", "Check default label");
|
|
ok(!payButton.disabled, "Button is enabled");
|
|
|
|
for (let [completionState, label] of completionStates) {
|
|
await el1.requestStore.setState({
|
|
changesPrevented: true,
|
|
completionState,
|
|
});
|
|
await asyncElementRendered();
|
|
is(payButton.textContent, label, "Check payButton label");
|
|
ok(payButton.disabled, "Button is disabled");
|
|
let rect = payButton.getBoundingClientRect();
|
|
let visibleElement =
|
|
document.elementFromPoint(rect.x + rect.width / 2, rect.y + rect.height / 2);
|
|
ok(payButton === visibleElement, "Pay button is on top of the overlay");
|
|
}
|
|
});
|
|
|
|
add_task(async function test_disconnect() {
|
|
await setup();
|
|
|
|
el1.remove();
|
|
await el1.requestStore.setState({orderDetailsShowing: true});
|
|
await asyncElementRendered();
|
|
ok(el1.stateChangeCallback.notCalled, "stateChangeCallback not called");
|
|
ok(el1.render.notCalled, "render not called");
|
|
|
|
let elDetails = el1._orderDetailsOverlay;
|
|
ok(elDetails.hasAttribute("hidden"), "details overlay remains hidden");
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|