"use strict";
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

// Checks that style editor contains correct stylesheets after initialization.

const TESTCASE_URI = TEST_BASE_HTTP + "simple.html";
const EXPECTED_SHEETS = [
  {
    sheetIndex: 0,
    name: /^simple.css$/,
    rules: 1,
    active: true,
  },
  {
    sheetIndex: 1,
    name: /^<.*>$/,
    rules: 3,
    active: false,
  },
];

add_task(async function () {
  const { ui } = await openStyleEditorForURL(TESTCASE_URI);

  is(ui.editors.length, 2, "The UI contains two style sheets.");
  checkSheet(ui.editors[0], EXPECTED_SHEETS[0]);
  checkSheet(ui.editors[1], EXPECTED_SHEETS[1]);
});

function checkSheet(editor, expected) {
  is(
    editor.styleSheet.styleSheetIndex,
    expected.sheetIndex,
    "Style sheet has correct index."
  );

  const summary = editor.summary;
  const name = summary
    .querySelector(".stylesheet-name > label")
    .getAttribute("value");
  ok(expected.name.test(name), "The name '" + name + "' is correct.");

  const ruleCount = summary.querySelector(".stylesheet-rule-count").textContent;
  is(parseInt(ruleCount, 10), expected.rules, "the rule count is correct");

  is(
    summary.classList.contains("splitview-active"),
    expected.active,
    "The active status for this sheet is correct."
  );
}
