mirror of
https://github.com/servo/servo.git
synced 2025-07-11 17:33:47 +01:00
104 lines
3.9 KiB
HTML
104 lines
3.9 KiB
HTML
<!doctype html>
|
|
<meta charset="utf-8">
|
|
<title>Tests for PaymentRequestEvent</title>
|
|
<link rel="help" href="https://w3c.github.io/payment-handler/#the-paymentrequestevent">
|
|
<link rel="manifest" href="/payment-handler/basic-card.json">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="register-and-activate-service-worker.js"></script>
|
|
<p>When the payment sheet is shown, please authorize the mock payment.</p>
|
|
<script>
|
|
async function setInstrumentsAndRunTests(registration) {
|
|
await registration.paymentManager.instruments.clear();
|
|
await registration.paymentManager.instruments.set('instrument-key', {
|
|
name: 'Instrument Name',
|
|
icons: [
|
|
{src: '/images/rgrg-256x256.png', sizes: '256x256', type: 'image/png'},
|
|
],
|
|
method: 'basic-card',
|
|
capabilities: {supportedNetworks: ['mir']},
|
|
});
|
|
runTests();
|
|
}
|
|
|
|
function runTests() {
|
|
promise_test(async t => {
|
|
const response = await new PaymentRequest(
|
|
[
|
|
{supportedMethods: 'basic-card', data: {}},
|
|
{supportedMethods: 'interledger', data: {supportedNetworks: ['mir']}},
|
|
],
|
|
{
|
|
id: 'test-payment-request-identifier',
|
|
total: {label: 'Total', amount: {currency: 'USD', value: '0.01'}},
|
|
displayItems: [
|
|
{label: 'Item 1', amount: {currency: 'CAD', value: '0.005'}},
|
|
{label: 'Item 2', amount: {currency: 'EUR', value: '0.005'}},
|
|
],
|
|
modifiers: [
|
|
{
|
|
supportedMethods: 'basic-card',
|
|
data: {supportedNetworks: ['mir']},
|
|
total: {
|
|
label: 'MIR total',
|
|
amount: {currency: 'USD', value: '0.0099'},
|
|
},
|
|
additionalDisplayItems: [
|
|
{label: 'Item 3', amount: {currency: 'GBP', value: '-0.0001'}},
|
|
],
|
|
},
|
|
{
|
|
supportedMethods: 'basic-card',
|
|
data: {supportedNetworks: ['visa']},
|
|
total: {
|
|
label: 'VISA total',
|
|
amount: {currency: 'USD', value: '0.0098'},
|
|
},
|
|
additionalDisplayItems: [
|
|
{label: 'Item 4', amount: {currency: 'CNY', value: '-0.0002'}},
|
|
],
|
|
},
|
|
{
|
|
supportedMethods: 'interledger',
|
|
data: {},
|
|
total: {
|
|
label: 'Prepaid total',
|
|
amount: {currency: 'USD', value: '0.0097'},
|
|
},
|
|
additionalDisplayItems: [
|
|
{label: 'Item 5', amount: {currency: 'JPY', value: '-0.0003'}},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
).show();
|
|
const promise = response.complete('success');
|
|
assert_equals(response.requestId, 'test-payment-request-identifier');
|
|
assert_equals(response.methodName, 'basic-card');
|
|
assert_array_equals(response.details.billingAddress.addressLine, [
|
|
'1875 Explorer St #1000',
|
|
]);
|
|
assert_equals(response.details.billingAddress.city, 'Reston');
|
|
assert_equals(response.details.billingAddress.country, 'US');
|
|
assert_equals(response.details.billingAddress.dependentLocality, '');
|
|
assert_equals(response.details.billingAddress.organization, 'Google');
|
|
assert_equals(response.details.billingAddress.phone, '+15555555555');
|
|
assert_equals(response.details.billingAddress.postalCode, '20190');
|
|
assert_equals(response.details.billingAddress.recipient, 'Jon Doe');
|
|
assert_equals(response.details.billingAddress.region, 'VA');
|
|
assert_equals(response.details.billingAddress.sortingCode, '');
|
|
assert_equals(response.details.cardNumber, '4111111111111111');
|
|
assert_equals(response.details.cardSecurityCode, '123');
|
|
assert_equals(response.details.cardholderName, 'Jon Doe');
|
|
assert_equals(response.details.expiryMonth, '12');
|
|
assert_equals(response.details.expiryYear, '2028');
|
|
return promise;
|
|
}, 'Can perform payment');
|
|
}
|
|
|
|
registerAndActiveServiceWorker(
|
|
'basic-card.js',
|
|
'payment-app/',
|
|
setInstrumentsAndRunTests,
|
|
);
|
|
</script>
|