import { screen } from "@testing-library/react" import { render } from "./../../test_helpers" import React from "react" import { Table, Column } from "./Table" interface TestData { name: string description: string } const columns: Column[] = [ { name: "Name", key: "name", }, { name: "Description", key: "description", // For description, we'll test out the custom renderer path renderer: (field) => {"!!" + field + "!!"}, }, ] const data: TestData[] = [{ name: "AName", description: "ADescription" }] const emptyData: TestData[] = [] describe("Table", () => { it("renders empty state if empty", async () => { // Given const emptyState =
Empty Table!
const tableProps = { title: "TitleTest", data: emptyData, columns, emptyState, } // When render() // Then // Since there are no items, our empty state should've rendered const emptyTextElement = await screen.findByText("Empty Table!") expect(emptyTextElement).toBeDefined() }) it("renders title", async () => { // Given const tableProps = { title: "TitleTest", data: emptyData, columns, } // When render(
) // Then const titleElement = await screen.findByText("TitleTest") expect(titleElement).toBeDefined() }) it("renders data fields with default renderer if none provided", async () => { // Given const tableProps = { title: "TitleTest", data, columns, } // When render(
) // Then // Check that the 'name' was rendered, with the default renderer const nameElement = await screen.findByText("AName") expect(nameElement).toBeDefined() // ...and the description used our custom rendered const descriptionElement = await screen.findByText("!!ADescription!!") expect(descriptionElement).toBeDefined() }) })