/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { RenderResult } from "@testing-library/react"; import { render } from "@testing-library/react"; import React from "react"; import { Map } from "./map"; describe("Map", () => { describe("given no items and placeholder", () => { let rendered: RenderResult; beforeEach(() => { rendered = render( (
Some placeholder
)} > {() =>
Irrelevant
}
, ); }); it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); it("renders placeholder", () => { expect(rendered.getByTestId("some-placeholder")).toBeInTheDocument(); }); it("does not render rows", () => { expect(rendered.queryByTestId("some-row")).not.toBeInTheDocument(); }); }); describe("given no items but no placeholder", () => { let rendered: RenderResult; beforeEach(() => { rendered = render( {() =>
Irrelevant
}
, ); }); it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); it("does not render rows", () => { expect(rendered.queryByTestId("some-row")).not.toBeInTheDocument(); }); }); describe("given items and placeholder but no separator", () => { let rendered: RenderResult; beforeEach(() => { rendered = render( (
Some placeholder
)} > {(item) =>
} , ); }); it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); it("does not render placeholder", () => { expect( rendered.queryByTestId("some-placeholder"), ).not.toBeInTheDocument(); }); it("renders items", () => { expect(rendered.getByTestId("some-item-id")).toBeInTheDocument(); }); }); describe("given more than one item and separator", () => { let rendered: RenderResult; beforeEach(() => { rendered = render(
Some separator
} > {(item) =>
} , ); }); it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); it("renders items", () => { expect(rendered.getByTestId("some-item-id")).toBeInTheDocument(); }); it("renders separator", () => { expect(rendered.getAllByTestId("separator")).toHaveLength(2); }); }); describe("given more than one item and separator using left and right", () => { let rendered: RenderResult; beforeEach(() => { rendered = render( (
Some separator between {left.id} and {right.id}
)} > {(item) =>
} , ); }); it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); it("renders items", () => { expect(rendered.getByTestId("some-item-id")).toBeInTheDocument(); }); it("renders separator", () => { expect(rendered.getByTestId("separator-between-some-item-id-and-some-other-item-id")).toBeInTheDocument(); }); }); });