| <!doctype html> |
| <meta charset="utf8"> |
| <link rel="help" href="https://w3c.github.io/payment-request/#dom-paymentresponse-shippingaddress"> |
| <title> |
| PaymentResponse.prototype.shippingAddress |
| </title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="helpers.js"></script> |
| <script> |
| async function checkNullShippingAddress(button, options) { |
| button.disabled = true; |
| const { request, response } = await getPaymentRequestResponse(options); |
| await response.complete(); |
| test(() => { |
| assert_idl_attribute(response, "shippingAddress"); |
| assert_equals( |
| response.shippingAddress, |
| null, |
| "Expected response.shippingAddress to be null" |
| ); |
| assert_equals( |
| request.shippingAddress, |
| null, |
| "Expected request.shippingAddress to be null" |
| ); |
| }, button.textContent.trim()); |
| } |
| |
| async function runManualTest(button, options = {}, expected = {}, id) { |
| button.disabled = true; |
| const { request, response } = await getPaymentRequestResponse(options, id); |
| await response.complete(); |
| test(() => { |
| assert_equals(response.requestId, request.id, `Expected ids to match`); |
| assert_idl_attribute(response, "shippingAddress"); |
| const { shippingAddress: addr } = request; |
| assert_true( |
| addr instanceof PaymentAddress, |
| "Expect instance of PaymentAddress" |
| ); |
| try { |
| addr.toJSON(); |
| } catch (err) { |
| assert_unreached( |
| `Unexpected exception calling PaymentAddress.toJSON(): ${err}` |
| ); |
| } |
| if (expected.shippingAddress === null) { |
| return; |
| } |
| assert_equals(addr.country, "AF", "Expected AF for country"); |
| assert_true( |
| addr.addressLine instanceof Array, |
| "Expected addressLine to be an array" |
| ); |
| assert_equals( |
| addr.addressLine.toString(), |
| "1 wpt street", |
| "Expected '1 wpt street' for addressLine" |
| ); |
| assert_equals(addr.city, "Kabul", "Expected city to be Kabul"); |
| assert_equals(addr.postalCode, "1001", "Expect postalCode to be 1001"); |
| assert_equals(addr.recipient, "web platform test"); |
| }, button.textContent.trim()); |
| } |
| </script> |
| <h2>shippingAddress attribute</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 "web platform test" as recipient, at address "1 wpt street" in "Kabul, Afghanistan", zip/postal code 1001. |
| </p> |
| <ol> |
| <li> |
| <button onclick="checkNullShippingAddress(this, undefined)"> |
| If options is undefined, then shippingAddress must be null. |
| </button> |
| </li> |
| <li> |
| <button onclick="checkNullShippingAddress(this, {})"> |
| If the requestShipping member is missing, then shippingAddress must be null. |
| </button> |
| </li> |
| <li> |
| <button onclick="checkNullShippingAddress(this, {requestShipping: false})"> |
| If the requestShipping member is false, then shippingAddress must be null. |
| </button> |
| </li> |
| <li> |
| <button onclick="runManualTest(this, {requestShipping: true}).then(done)"> |
| If the requestShipping member is true, then shippingAddress must be "1 wpt street" in "Kabul, Afghanistan", zip code 1001. |
| </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> |