import { assert } from "chai";
import { getAbsoluteMappingEntries } from "../src/mapping-entry";
import { join } from "path";

describe("mapping-entry", () => {
  it("should change to absolute paths and sort in longest prefix order", () => {
    const result = getAbsoluteMappingEntries(
      "/absolute/base/url",
      {
        "*": ["/foo1", "/foo2"],
        "longest/pre/fix/*": ["/foo2/bar"],
        "pre/fix/*": ["/foo3"]
      },
      true
    );
    assert.deepEqual(result, [
      {
        pattern: "longest/pre/fix/*",
        paths: [join("/absolute", "base", "url", "foo2", "bar")]
      },
      {
        pattern: "pre/fix/*",
        paths: [join("/absolute", "base", "url", "foo3")]
      },
      {
        pattern: "*",
        paths: [
          join("/absolute", "base", "url", "foo1"),
          join("/absolute", "base", "url", "foo2")
        ]
      }
    ]);
  });

  it("should should add a match-all pattern when requested", () => {
    let result = getAbsoluteMappingEntries("/absolute/base/url", {}, true);
    assert.deepEqual(result, [
      {
        pattern: "*",
        paths: [join("/absolute", "base", "url", "*")]
      }
    ]);

    result = getAbsoluteMappingEntries("/absolute/base/url", {}, false);
    assert.deepEqual(result, []);
  });
});
