109 lines
3.6 KiB
HTML
109 lines
3.6 KiB
HTML
<!doctype html>
|
|
<meta charset="utf8">
|
|
<link rel="help" href="https://www.w3.org/TR/payment-request/#ContactAddress-interface">
|
|
<title>
|
|
PaymentResponse.prototype.shippingAddress
|
|
</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="../payment-response/helpers.js"></script>
|
|
<script>
|
|
const options = { requestShipping: true };
|
|
function runManualTest(button, expected = {}) {
|
|
button.disabled = true;
|
|
promise_test(async () => {
|
|
const { response } = await getPaymentRequestResponse(options);
|
|
await response.complete();
|
|
assert_idl_attribute(response, "shippingAddress");
|
|
const { shippingAddress: addr } = response;
|
|
assert_true(
|
|
addr instanceof ContactAddress,
|
|
"Expect instance of ContactAddress"
|
|
);
|
|
// An [ISO3166] alpha-2 code. The canonical form is upper case.
|
|
const { country } = addr;
|
|
assert_equals(country.length, 2, "Expected length is 2");
|
|
assert_true(/^[A-Z]{2}$/.test(country), "Canonical form is upper case");
|
|
assert_true(
|
|
addr.addressLine instanceof Array,
|
|
"Expected addressLine to be an array"
|
|
);
|
|
assert_throws_js(
|
|
TypeError,
|
|
() => {
|
|
addr.addressLine.push("this must throw");
|
|
},
|
|
"Array must be frozen"
|
|
);
|
|
for (let [attr, expectedValue] of Object.entries(expected)) {
|
|
assert_idl_attribute(addr, attr);
|
|
const msg = `Expected ContactAddress.${attr} to equal ${expectedValue}.`;
|
|
//.toString() flattens array addressLine,
|
|
//.toLowerCase() because case can't be enforced for some attributes
|
|
const actualValue = addr[attr].toString().toLowerCase();
|
|
expectedValue = expectedValue.toString().toLowerCase();
|
|
assert_equals(actualValue, expectedValue, msg);
|
|
}
|
|
// Check toJSON result
|
|
for (let [prop, jsonValue] of Object.entries(addr.toJSON())) {
|
|
const actualValue = jsonValue.toString().toLowerCase();
|
|
const expectedValue = expected[prop].toString().toLowerCase();
|
|
const msg = `Expected JSON ${prop} to be ${expectedValue}`;
|
|
assert_equals(actualValue, expectedValue, msg);
|
|
}
|
|
}, button.textContent.trim());
|
|
done();
|
|
}
|
|
</script>
|
|
<h2>ContactAddress interface</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 prompted, please enter addresses as follows...
|
|
</p>
|
|
<ol>
|
|
<li>
|
|
<button onclick="
|
|
const expectedAddress = {
|
|
country: 'AU',
|
|
regionCode: 'QLD',
|
|
addressLine: '55 test st',
|
|
city: 'Chapel Hill',
|
|
dependentLocality: '',
|
|
postalCode: '6095',
|
|
region: 'QLD',
|
|
sortingCode: '',
|
|
organization: 'w3c',
|
|
recipient: 'web platform test',
|
|
phone: '+61733780000',
|
|
};
|
|
runManualTest(this, expectedAddress);">
|
|
If the requestShipping member is true, then shippingAddress's ContactAddress must match the expected values.
|
|
</button>
|
|
Please use:
|
|
<dl>
|
|
<dt>Recipient:</dt>
|
|
<dd>web platform test</dd>
|
|
<dt>Address line:</dt>
|
|
<dd>55 test st</dd>
|
|
<dt>Country</dt>
|
|
<dd>Australia</dd>
|
|
<dt>City</dt>
|
|
<dd>Chapel Hill</dd>
|
|
<dd>State/Region</dd>
|
|
<dd>Queensland</dd>
|
|
<dt>postal code </dt>
|
|
<dd>6095</dd>
|
|
<dt>organization</dt>
|
|
<dd>w3c</dd>
|
|
<dt>Phone number</dt>
|
|
<dd>+61 7 3378 0000</dd>
|
|
</dl>
|
|
</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>
|