| <!doctype html> |
| <meta charset="utf-8"> |
| <title>Tests for CanMakePaymentEvent.respondWithMinimalUI</title> |
| <link rel="help" href="https://gist.github.com/rsolomakhin/eba91c185028899883d2c7f37f357d7c"> |
| <link rel="manifest" href="manifest.json"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| const methodName = window.location.origin; |
| |
| async function registerApp(methodName) { |
| await navigator.serviceWorker.register('app-respond-with-minimal-ui.js'); |
| const registration = await navigator.serviceWorker.ready; |
| if (!registration.paymentManager) { |
| return; |
| } |
| if (registration.paymentManager.requestPermission) { |
| const permission = await registration.paymentManager.requestPermission(); |
| if (permission !== 'granted') { |
| return; |
| } |
| } |
| await registration.paymentManager.instruments.set('instrument-key', { |
| name: 'Test Payment Method', |
| method: methodName, |
| }); |
| return registration; |
| } |
| |
| async function hasEnrolledInstrument(supportedMethods, data) { |
| return (new PaymentRequest( |
| [{supportedMethods, data}], |
| {total: {label: 'Total', amount: {currency: 'USD', value: '0.01'}}})) |
| .hasEnrolledInstrument(); |
| } |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_false(await hasEnrolledInstrument(methodName, {test: 0})); |
| }, 'respondWithMinimalUI(0) causes hasEnrolledInstrument() to return "false"'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_false(await hasEnrolledInstrument(methodName, {test: {}})); |
| }, 'respondWithMinimalUI({}) causes hasEnrolledInstrument() to return "false"'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_true(await hasEnrolledInstrument(methodName, |
| {test: {canMakePayment: true}})); |
| }, 'respondWithMinimalUI({canMakePayment: true}) causes ' |
| + 'hasEnrolledInstrument() to return "true"'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_false(await hasEnrolledInstrument(methodName, |
| {test: {canMakePayment: false}})); |
| }, 'respondWithMinimalUI({canMakePayment: false}) causes ' |
| + 'hasEnrolledInstrument() to return "false"'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_true(await hasEnrolledInstrument(methodName, {test: |
| {canMakePayment: true, readyForMinimalUI: true}})); |
| }, 'respondWithMinimalUI({canMakePayment: true, readyForMinimalUI: true}) does ' |
| + 'not crash'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_true(await hasEnrolledInstrument(methodName, {test: |
| {canMakePayment: true, readyForMinimalUI: true, accountBalance: ''}})); |
| }, 'respondWithMinimalUI({canMakePayment: true, readyForMinimalUI: true, ' |
| + 'accountBalance: ""}) does not crash'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_true(await hasEnrolledInstrument(methodName, {test: |
| {canMakePayment: true, readyForMinimalUI: true, accountBalance: '--'}})); |
| }, 'respondWithMinimalUI({canMakePayment: true, readyForMinimalUI: true, ' |
| + 'accountBalance: "--"}) does not crash'); |
| |
| promise_test(async t => { |
| await registerApp(methodName); |
| assert_true(await hasEnrolledInstrument(methodName, {test: |
| {canMakePayment: true, readyForMinimalUI: true, accountBalance: '6.78'}})); |
| }, 'respondWithMinimalUI({canMakePayment: true, readyForMinimalUI: true, ' |
| + 'accountBalance: "6.78"}) does not crash'); |
| |
| </script> |