test_update_errors.html (3476B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1435157 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1435157</title> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 10 <script src="/tests/SimpleTest/SimpleTest.js"></script> 11 <script type="application/javascript" src="DefaultData.js"></script> 12 <script type="application/javascript"> 13 14 "use strict"; 15 SimpleTest.waitForExplicitFinish(); 16 17 var gUrl = SimpleTest.getTestFileURL('UpdateErrorsChromeScript.js'); 18 var gScript = SpecialPowers.loadChromeScript(gUrl); 19 20 function testFailHandler(message) { 21 ok(false, message); 22 } 23 function testPassHandler(message) { 24 ok(true, message); 25 } 26 gScript.addMessageListener("test-fail", testFailHandler); 27 gScript.addMessageListener("test-pass", testPassHandler); 28 29 const addressErrors = { 30 addressLine: "addressLine error", 31 city: "city error", 32 country: "country error", 33 dependentLocality: "dependentLocality error", 34 organization: "organization error", 35 phone: "phone error", 36 postalCode: "postalCode error", 37 recipient: "recipient error", 38 region: "region error", 39 regionCode: "regionCode error", 40 sortingCode: "sortingCode error", 41 }; 42 43 const payErrors = { 44 email: "email error", 45 name: "name error", 46 phone: "phone error", 47 }; 48 49 let updateDetails = { 50 total:{ 51 label: "Total", 52 amount: { 53 currency: "USD", 54 value: "1.00", 55 }, 56 }, 57 erros: "shipping address error", 58 shippingAddressErrors: addressErrors, 59 payerErrors: payErrors, 60 } 61 62 // testing functions 63 function testUpdateErrors() { 64 return new Promise((resolve, reject) => { 65 const payRequest = new PaymentRequest(defaultMethods, defaultDetails, defaultOptions); 66 payRequest.addEventListener("shippingaddresschange", event => { 67 event.updateWith(updateDetails); 68 }); 69 payRequest.addEventListener("shippingoptionchange", event => { 70 event.updateWith(updatedDetails); 71 }); 72 const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true); 73 payRequest.show().then(response => { 74 ok(false, "Expected AbortError, but got pass"); 75 resolve(); 76 }, error => { 77 is(error.name, "AbortError", "Expect AbortError, but got " + error.name); 78 resolve(); 79 }).catch( e => { 80 ok(false, "Unexpected error: " + e.name); 81 resolve(); 82 }).finally(handler.destruct); 83 }); 84 } 85 86 // teardown function 87 function teardown() { 88 gScript.addMessageListener("teardown-complete", function teardownCompleteHandler() { 89 gScript.removeMessageListener("teardown-complete", teardownCompleteHandler); 90 gScript.removeMessageListener("test-fail", testFailHandler); 91 gScript.removeMessageListener("test-pass", testPassHandler); 92 gScript.destroy(); 93 SimpleTest.finish(); 94 }); 95 gScript.sendAsyncMessage("teardown"); 96 } 97 98 // test main body 99 function runTests() { 100 testUpdateErrors() 101 .then(teardown) 102 .catch( e => { 103 ok(false, "Unexpected error: " + e.name); 104 SimpleTest.finish(); 105 }); 106 } 107 108 window.addEventListener('load', function() { 109 SpecialPowers.pushPrefEnv({ 110 'set': [ 111 ['dom.payments.request.enabled', true], 112 ] 113 }, runTests); 114 }); 115 116 </script> 117 </head> 118 <body> 119 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1435157">Mozilla Bug 1435157</a> 120 </body> 121 </html>