-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Boolean table cell in edit mode (#2258)
resolves #2257 Co-authored-by: Fred Lefévère-Laoide <Fred.Lefevere-Laoide@Taipy.io>
- Loading branch information
1 parent
e4c34f8
commit f3ca62d
Showing
3 changed files
with
121 additions
and
30 deletions.
There are no files selected for viewing
28 changes: 0 additions & 28 deletions
28
frontend/taipy-gui/src/components/Taipy/tableUtils.spec.ts
This file was deleted.
Oops, something went wrong.
118 changes: 118 additions & 0 deletions
118
frontend/taipy-gui/src/components/Taipy/tableUtils.spec.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
import { render } from "@testing-library/react"; | ||
import "@testing-library/jest-dom"; | ||
import userEvent from "@testing-library/user-event"; | ||
|
||
import { EditableCell, generateHeaderClassName, RowValue } from "./tableUtils"; | ||
|
||
describe("generateHeaderClassName", () => { | ||
it("should generate a CSS class name with a hyphen prefix and convert to lowercase", () => { | ||
const result = generateHeaderClassName("ColumnName"); | ||
expect(result).toBe("-columnname"); | ||
}); | ||
|
||
it("should replace spaces and special characters with hyphens", () => { | ||
const result = generateHeaderClassName("Column Name@123!"); | ||
expect(result).toBe("-column-name-123-"); | ||
}); | ||
|
||
it("should remove multiple hyphens in a row", () => { | ||
const result = generateHeaderClassName("Column--Name"); | ||
expect(result).toBe("-column-name"); | ||
}); | ||
|
||
it("should handle empty strings and return an empty string", () => { | ||
const result = generateHeaderClassName(""); | ||
expect(result).toBe(""); | ||
}); | ||
|
||
it("should return empty string for the undefined", () => { | ||
const result = generateHeaderClassName(undefined); | ||
expect(result).toBe(""); | ||
}); | ||
}); | ||
|
||
describe("Editable cell", () => { | ||
const formatConfig = { | ||
timeZone: "FR", | ||
forceTZ: false, | ||
date: "dd/MM/yyyy", | ||
dateTime: "dd/MM/yyyy hh:mm", | ||
number: "", | ||
}; | ||
const colDesc = { dfid: "id", type: "bool", index: 0 }; | ||
describe("Non editable mode", () => { | ||
it("show a boolean as a switch", () => { | ||
const { getByRole } = render( | ||
<EditableCell | ||
rowIndex={0} | ||
value={true} | ||
formatConfig={formatConfig} | ||
colDesc={colDesc} | ||
tableClassName="taipy-table" | ||
/> | ||
); | ||
const elt = getByRole("checkbox"); | ||
expect(elt.tagName).toBe("INPUT"); | ||
const switchCtl = elt.closest(".MuiSwitch-root"); | ||
expect(switchCtl).not.toBeNull(); | ||
expect(switchCtl).toHaveClass("taipy-table-bool"); | ||
}); | ||
it("show a boolean as a check", () => { | ||
const { getByRole } = render( | ||
<EditableCell | ||
rowIndex={0} | ||
value={true} | ||
formatConfig={formatConfig} | ||
colDesc={colDesc} | ||
useCheckbox={true} | ||
tableClassName="taipy-table" | ||
/> | ||
); | ||
const elt = getByRole("checkbox"); | ||
expect(elt.tagName).toBe("INPUT"); | ||
expect(elt.closest(".MuiSwitch-root")).toBeNull(); | ||
expect(elt).toHaveClass("taipy-table-bool"); | ||
}); | ||
}); | ||
describe("Editable mode", () => { | ||
const onValidation = (value: RowValue, rowIndex: number, colName: string, userValue: string, tz?: string) => {}; | ||
it("show a boolean as a switch", async () => { | ||
const { getByRole, getByTestId } = render( | ||
<EditableCell | ||
rowIndex={0} | ||
value={true} | ||
formatConfig={formatConfig} | ||
colDesc={colDesc} | ||
tableClassName="taipy-table" | ||
onValidation={onValidation} | ||
/> | ||
); | ||
const but = getByTestId("EditIcon"); | ||
await userEvent.click(but); | ||
const elt = getByRole("checkbox"); | ||
expect(elt.tagName).toBe("INPUT"); | ||
const switchCtl = elt.closest(".MuiSwitch-root"); | ||
expect(switchCtl).not.toBeNull(); | ||
expect(switchCtl).toHaveClass("taipy-table-bool"); | ||
}); | ||
it("show a boolean as a check", async () => { | ||
const { getByRole, getByTestId } = render( | ||
<EditableCell | ||
rowIndex={0} | ||
value={true} | ||
formatConfig={formatConfig} | ||
colDesc={colDesc} | ||
useCheckbox={true} | ||
tableClassName="taipy-table" | ||
onValidation={onValidation} | ||
/> | ||
); | ||
const but = getByTestId("EditIcon"); | ||
await userEvent.click(but); | ||
const elt = getByRole("checkbox"); | ||
expect(elt.tagName).toBe("INPUT"); | ||
expect(elt.closest(".MuiSwitch-root")).toBeNull(); | ||
expect(elt).toHaveClass("taipy-table-bool"); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters