fune/browser/components/payments/test/mochitest/test_payment_dialog.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

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>