import { insertButtonsBetweenLabels } from "..";

describe("insertButtonsBetweenLabels - depthlevel 1", () => {
  const buttons = "buttons";

  const labels = [
    { name: "label_1" },
    { name: "label_2" },
    { name: "label_3" },
  ];

  it("put buttons on top", () => {
    const configuration = {
      tv_buttons_container_position: "on_top",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([buttons, ...labels]);
  });

  it("put buttons on bottom", () => {
    const configuration = {
      tv_buttons_container_position: "unknown_position",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([...labels, buttons]);
  });

  it("put underneath label_1", () => {
    const configuration = {
      tv_buttons_container_position: "label_1",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([labels[0], buttons, labels[1], labels[2]]);
  });

  it("put underneath label_2", () => {
    const configuration = {
      tv_buttons_container_position: "label_2",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([labels[0], labels[1], buttons, labels[2]]);
  });

  it("put underneath label_3", () => {
    const configuration = {
      tv_buttons_container_position: "label_3",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([labels[0], labels[1], labels[2], buttons]);
  });

  it("put underneath all", () => {
    const configuration = {
      tv_buttons_container_position: "label_X",
    };

    const result = insertButtonsBetweenLabels(configuration, buttons, labels);

    expect(result).toEqual([labels[0], labels[1], labels[2], buttons]);
  });

  it("put underneath all", () => {
    const configuration = {
      tv_buttons_container_position: "label_X",
    };

    const result = insertButtonsBetweenLabels(
      configuration,
      buttons,
      undefined
    );

    expect(result).toEqual([buttons]);
  });

  it("put nothing if buttons are nil", () => {
    const configuration = {
      tv_buttons_container_position: "label_X",
    };

    const result = insertButtonsBetweenLabels(configuration, null, labels);

    expect(result).toEqual(labels);
  });
});
