mirror of
https://github.com/servo/servo.git
synced 2025-06-06 00:25:37 +00:00
150 lines
4.3 KiB
HTML
150 lines
4.3 KiB
HTML
<!DOCTYPE html> <meta charset="utf-8" />
|
|
<title>Test for requesting billing address</title>
|
|
<link
|
|
rel="help"
|
|
href="https://github.com/w3c/payment-method-basic-card/pull/65"
|
|
/>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
setup({
|
|
explicit_done: true,
|
|
explicit_timeout: true,
|
|
});
|
|
const basicCard = { supportedMethods: "basic-card" };
|
|
const details = {
|
|
total: {
|
|
label: "label",
|
|
amount: { currency: "USD", value: "5.00" },
|
|
},
|
|
};
|
|
|
|
// Smoke tests
|
|
test(() => {
|
|
assert_true(
|
|
"onpaymentmethodchange" in PaymentRequest.prototype,
|
|
"The paymentmethodchange event handler is not supported on PaymentRequest"
|
|
);
|
|
assert_true(
|
|
"PaymentMethodChangeEvent" in window,
|
|
"The PaymentMethodChangeEvent is not supported"
|
|
);
|
|
}, "PaymentMethodChangeEvent support");
|
|
|
|
function dontRequestBillingAddress(options) {
|
|
promise_test(async t => {
|
|
const request = new PaymentRequest([basicCard], details, {
|
|
requestBillingAddress: false,
|
|
});
|
|
const showPromise = request.show();
|
|
|
|
// Let's check the method data from PaymentMethodChangeEvent.
|
|
const event = await new Promise(resolve =>
|
|
request.addEventListener("paymentmethodchange", resolve)
|
|
);
|
|
assert_true(
|
|
event instanceof PaymentMethodChangeEvent,
|
|
"Expected instance of PaymentMethodChangeEvent"
|
|
);
|
|
assert_equals(
|
|
event.methodDetails.billingAddress,
|
|
null,
|
|
"Expected methodDetails.billingAddress to be null"
|
|
);
|
|
|
|
// Let's check the billingAddress in the response
|
|
const response = await showPromise;
|
|
const {
|
|
details: { billingAddress: responseBillingAddress },
|
|
} = response;
|
|
|
|
assert_equals(
|
|
responseBillingAddress,
|
|
null,
|
|
"Expected PaymentResponse.data.billingAddress to be null"
|
|
);
|
|
|
|
// And we are done
|
|
await response.complete("success");
|
|
});
|
|
}
|
|
|
|
function requestBillingAddress() {
|
|
promise_test(async t => {
|
|
const request = new PaymentRequest([basicCard], details, {
|
|
requestBillingAddress: true,
|
|
});
|
|
const showPromise = request.show();
|
|
|
|
// Let's check the methodDetails from event.
|
|
const event = await new Promise(resolve =>
|
|
request.addEventListener("paymentmethodchange", resolve)
|
|
);
|
|
assert_true(
|
|
event instanceof PaymentMethodChangeEvent,
|
|
"Expected instance of PaymentMethodChangeEvent"
|
|
);
|
|
const { billingAddress: eventBillingAddress } = event.methodDetails;
|
|
checkRedactList(eventBillingAddress);
|
|
|
|
// Let's check the billingAddress in the response.
|
|
const response = await showPromise;
|
|
const {
|
|
details: { billingAddress: responseBillingAddress },
|
|
} = await showPromise;
|
|
checkRedactList(responseBillingAddress);
|
|
|
|
// And we are done.
|
|
await response.complete("success");
|
|
});
|
|
}
|
|
|
|
function checkRedaction(billingAddress) {
|
|
assert_true(
|
|
billingAddress instanceof PaymentAddress,
|
|
"Expected instance of PaymentAddress"
|
|
);
|
|
for (const item of ["organization", "phone", "recipient"]) {
|
|
assert_equals(
|
|
billingAddress[item],
|
|
"",
|
|
`Expected billingAddress's "${item}" attribute to equal null (redacted).`
|
|
);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<h2>Request billing address</h2>
|
|
<p>
|
|
Click on each button in sequence from top to bottom without refreshing the
|
|
page. Each button will bring up the Payment Request UI window.
|
|
</p>
|
|
<p>
|
|
When the payment sheet is presented, select a payment method (e.g., a credit
|
|
card), and press "Pay".
|
|
</p>
|
|
<ol>
|
|
<li>
|
|
<button onclick="dontRequestBillingAddress()">
|
|
When no billing address is requested,
|
|
`PaymentMethodChangeEvent.methodData.billingAddress` is null.
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button onclick="requestBillingAddress()">
|
|
When billing address is
|
|
requested,`PaymentMethodChangeEvent.methodData.billingAddress` is a
|
|
`PaymentAddress`.
|
|
</button>
|
|
</li>
|
|
<li><button onclick="done()">Done!</button></li>
|
|
</ol>
|
|
<small>
|
|
If you find a buggy test, please
|
|
<a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a> and
|
|
tag one of the
|
|
<a
|
|
href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/META.yml"
|
|
>suggested reviewers</a
|
|
>.
|
|
</small>
|