"use strict";

// kTestRoot is from head.js
const kTestPage = kTestRoot + "simple_payment_request.html";

registerCleanupFunction(cleanup);

add_task(async function() {
  Services.prefs.setBoolPref("dom.payments.request.enabled", true);
  await BrowserTestUtils.withNewTab(kTestPage,
    async function(browser) {
      await BrowserTestUtils.withNewTab(kTestPage,
        function(browser) {
          const paymentSrv = Cc["@mozilla.org/dom/payments/payment-request-service;1"].getService(Ci.nsIPaymentRequestService);
          ok(paymentSrv, "Fail to get PaymentRequestService.");

          const paymentEnum = paymentSrv.enumerate();
          ok(paymentEnum.hasMoreElements(), "PaymentRequestService should have at least one payment request.");
          let tabIds = [];
          while (paymentEnum.hasMoreElements()) {
            let payment = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest);
            ok(payment, "Fail to get existing payment request.");
            checkSimplePayment(payment);
            tabIds.push(payment.tabId);
          }
          is(tabIds.length, 2, "TabId array length should be 2.");
          ok(tabIds[0] != tabIds[1], "TabIds should be different.");
          Services.prefs.setBoolPref("dom.payments.request.enabled", false);
        }
      );
    }
  );
});
