payment-request-hasenrolledinstrument-method.tentative.https.html (3043B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Tests for PaymentRequest.hasEnrolledInstrument() method</title> 4 <link rel="help" href="https://w3c.github.io/payment-request/#hasenrolledinstrument-method"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/testdriver.js"></script> 8 <script src='/resources/testdriver-vendor.js'></script> 9 <script> 10 "use strict"; 11 12 setup({ allow_uncaught_exception: true }); 13 14 const unsupportedMethods = [ 15 { supportedMethods: "this-is-not-supported" }, 16 { supportedMethods: "https://not.supported" }, 17 ]; 18 const defaultMethods = Object.freeze([ 19 { 20 supportedMethods: "basic-card", 21 data: { 22 supportedNetworks: [ 'visa' ], 23 }, 24 } 25 ]); 26 const defaultDetails = Object.freeze({ 27 total: { 28 label: "Total", 29 amount: { 30 currency: "USD", 31 value: "1.00", 32 }, 33 }, 34 }); 35 36 promise_test(async t => { 37 const request = new PaymentRequest(unsupportedMethods, defaultDetails); 38 assert_false( 39 await request.hasEnrolledInstrument(), 40 "hasEnrolledInstrument() should resolve to false." 41 ); 42 }, `hasEnrolledInstrument() resolves to false for unsupported payment methods.`); 43 44 promise_test(async t => { 45 const request = new PaymentRequest(defaultMethods, defaultDetails); 46 const [acceptPromise, hasEnrolledInstrumentPromise] = await test_driver.bless( 47 "show payment request", 48 () => { 49 const acceptPromise = request.show(); // Sets state to "interactive" 50 const hasEnrolledInstrumentPromise = request.hasEnrolledInstrument(); 51 return [acceptPromise, hasEnrolledInstrumentPromise]; 52 }); 53 await promise_rejects_dom(t, "InvalidStateError", hasEnrolledInstrumentPromise); 54 55 await request.abort(); 56 await promise_rejects_dom(t, "AbortError", acceptPromise); 57 }, `If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException.`); 58 59 promise_test(async t => { 60 const request = new PaymentRequest(defaultMethods, defaultDetails); 61 const [abortPromise, acceptPromise] = await test_driver.bless( "show payment request", () => { 62 const acceptPromise = request.show(); // Sets state to "interactive" 63 acceptPromise.catch(() => {}); // no-op, just to handle unhandled rejection in devtools. 64 const abortPromise =request.abort(); // Sets state to "closed" 65 return [abortPromise, acceptPromise]; 66 }); 67 await abortPromise; 68 await promise_rejects_dom(t, "AbortError", acceptPromise); 69 70 const hasEnrolledInstrumentPromise = request.hasEnrolledInstrument(); 71 await promise_rejects_dom(t, "InvalidStateError", hasEnrolledInstrumentPromise); 72 }, `If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException.`); 73 </script> 74 75 <small> 76 If you find a buggy test, please <a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a> 77 and tag one of the <a href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/META.yml">suggested reviewers</a>. 78 </small>