<!doctype html>
<meta charset=utf-8>
<title>Historical Payment Request APIs</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
[
  // https://github.com/w3c/browser-payment-api/pull/419
  ["paymentRequestID", "PaymentRequest"],
  ["paymentRequestID", "PaymentResponse"],

  // https://github.com/w3c/browser-payment-api/pull/258
  ["careOf", "PaymentAddress"],

  // https://github.com/w3c/browser-payment-api/pull/219
  ["totalAmount", "PaymentResponse"],

  // https://github.com/w3c/browser-payment-api/pull/426
  ["paymentRequestId", "PaymentRequest"],
  ["paymentRequestId", "PaymentResponse"],

  // https://github.com/w3c/payment-request/pull/765
  ["languageCode", "PaymentAddress"],
].forEach(([member, interf]) => {
  test(() => {
    assert_false(member in window[interf].prototype);
  }, member + ' in ' + interf);
});

// https://github.com/w3c/payment-request/pull/551
test(() => {
  const methods = [];
  const expectedError = {name: 'toString should be called'};
  const unexpectedError = {name: 'sequence<DOMString> conversion is not allowed'};
  methods.toString = () => { throw expectedError; };
  Object.defineProperty(methods, '0', { get: () => { throw unexpectedError; } });
  assert_throws(expectedError, () => {
    new PaymentRequest([{supportedMethods: methods}], {total: {label: 'bar', amount: {currency: 'BAZ', value: '0'}}});
  });
}, 'supportedMethods must not support sequence<DOMString>');
</script>
