tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

payment-request-shippingOption-attribute.https.html (3584B)


      1 <!DOCTYPE html>
      2 <!-- Copyright © 2017 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
      3 <meta charset="utf-8">
      4 <title>Test for PaymentRequest shippingOption attribute</title>
      5 <link rel="help" href="https://w3c.github.io/payment-request/#shippingoption-attribute">
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script>
      9 const validMethod = Object.freeze({ supportedMethods: "foo" });
     10 const validMethods = Object.freeze([validMethod]);
     11 const validAmount = Object.freeze({ currency: "USD", value: "5.00" });
     12 const validTotal = Object.freeze({
     13  label: "label",
     14  amount: validAmount,
     15 });
     16 const validDetails = Object.freeze({ total: validTotal });
     17 const validShippingOption = Object.freeze({
     18  id: "valid",
     19  label: "Valid shipping option",
     20  amount: validAmount,
     21  selected: false,
     22 });
     23 
     24 const requestShipping = Object.freeze({
     25  requestShipping: true,
     26 });
     27 
     28 test(() => {
     29  const request = new PaymentRequest(validMethods, validDetails);
     30  assert_idl_attribute(request, "shippingOption");
     31 }, "Must have a .shippingOption IDL attribute.");
     32 
     33 test(() => {
     34  const request = new PaymentRequest(validMethods, validDetails);
     35  assert_equals(request.shippingOption, null, "expected null");
     36 }, ".shippingOption attribute must default to null.");
     37 
     38 test(() => {
     39  const detailsWithShippingOptions = Object.assign({}, validDetails, {
     40    shippingOptions: [validShippingOption],
     41  });
     42  const request = new PaymentRequest(
     43    validMethods,
     44    detailsWithShippingOptions,
     45    requestShipping
     46  );
     47  assert_equals(request.shippingOption, null, "expected null");
     48 }, "If there is a single shipping option, but selected is false, then .shippingOption must be null.");
     49 
     50 test(() => {
     51  const shippingOption2 = Object.assign({}, validShippingOption, {
     52    id: "valid2",
     53  });
     54  const detailsWithShippingOptions = Object.assign({}, validDetails, {
     55    shippingOptions: [validShippingOption, shippingOption2],
     56  });
     57  const request = new PaymentRequest(
     58    validMethods,
     59    detailsWithShippingOptions,
     60    requestShipping
     61  );
     62  assert_equals(request.shippingOption, null, "expected null");
     63 }, "If there are multiple shipping options all with `selected` set to false, then .shippingOption is null.");
     64 
     65 test(() => {
     66  const shippingOption2 = Object.assign({}, validShippingOption, {
     67    id: "pass",
     68    selected: true,
     69  });
     70  const detailsWithShippingOptions = Object.assign({}, validDetails, {
     71    shippingOptions: [shippingOption2, validShippingOption],
     72  });
     73  const request = new PaymentRequest(
     74    validMethods,
     75    detailsWithShippingOptions,
     76    requestShipping
     77  );
     78  assert_equals(request.shippingOption, "pass", "expected 'pass'");
     79 }, "Given multiple shipping options, it must use the selected shipping option for .shippingOption value.");
     80 
     81 test(() => {
     82  const shippingOption1 = Object.assign({}, validShippingOption, {
     83    id: "fail",
     84    selected: true,
     85  });
     86  const shippingOption2 = Object.assign({}, validShippingOption, {
     87    id: "pass",
     88    selected: true,
     89  });
     90  const detailsWithShippingOptions = Object.assign({}, validDetails, {
     91    shippingOptions: [shippingOption1, shippingOption2, validShippingOption],
     92  });
     93  const request = new PaymentRequest(
     94    validMethods,
     95    detailsWithShippingOptions,
     96    requestShipping
     97  );
     98  assert_equals(request.shippingOption, "pass", "expected 'pass'");
     99 }, "If there are multiple of the shipping options with selected true, then .shippingOption is the last selected shipping option in order.");
    100 </script>