From 705efc1b8a26b7fdfd0821c431e5e0880b0d224b Mon Sep 17 00:00:00 2001 From: reesporte Date: Mon, 1 Nov 2021 09:25:07 -0500 Subject: [PATCH] refactor for easier reading, add more tests --- .../src/shared/utils/formatTableCell.test.tsx | 31 +++++++++++++++++-- lattice/src/shared/utils/formatTableCell.tsx | 13 ++++---- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/lattice/src/shared/utils/formatTableCell.test.tsx b/lattice/src/shared/utils/formatTableCell.test.tsx index 2578a34ae..5a8a0e211 100644 --- a/lattice/src/shared/utils/formatTableCell.test.tsx +++ b/lattice/src/shared/utils/formatTableCell.test.tsx @@ -17,7 +17,7 @@ afterEach(() => { container = null; }); -it("it renders strings in quotes", () => { +it("renders strings in quotes", () => { let row = { thing: "quoted string!" }; let col = { name: "thing", datatype: "[]string" }; @@ -39,7 +39,7 @@ it("renders objects as stringified", () => { }`); }); -it("it puts timestamps in MM/DD/YYYY hh:mm:ss a format", () => { +it("puts timestamps in MM/DD/YYYY hh:mm:ss a format", () => { let row = { thing: 1635452050094 }; let col = { name: "thing", datatype: "timestamp" }; @@ -48,3 +48,30 @@ it("it puts timestamps in MM/DD/YYYY hh:mm:ss a format", () => { }); expect(container.textContent).toBe("10/28/2021 08:14:10 pm"); }); + +it("renders timestamps with no value as LocaleString", () => { + let row = { thing: false }; + let col = { name: "thing", datatype: "timestamp" }; + + act(() => { + render(formatTableCell(row, col), container); + }); + expect(container.textContent).toBe(row.thing.toLocaleString()); +}); + +it("renders non-timestamp, non-string, non-objects as LocaleString", () => { + let row = { thing: "idk" }; + let col = { name: "thing", datatype: "idk" }; + + act(() => { + render(formatTableCell(row, col), container); + }); + expect(container.textContent).toBe(row.thing.toLocaleString()); +}); + +it("returns null for undefined objects", () => { + let row = {}; + let col = { name: "thing", datatype: "" }; + + expect(formatTableCell(row, col)).toBeNull(); +}); diff --git a/lattice/src/shared/utils/formatTableCell.tsx b/lattice/src/shared/utils/formatTableCell.tsx index 3c6de098b..b21c10713 100644 --- a/lattice/src/shared/utils/formatTableCell.tsx +++ b/lattice/src/shared/utils/formatTableCell.tsx @@ -11,13 +11,12 @@ export const formatTableCell = (row: any, col: any) => { if (col.datatype === "[]string") { return {'"' + row[col.name] + '"'}; } - return ( - - {col.datatype === "timestamp" && row[col.name] - ? moment.utc(row[col.name]).format("MM/DD/YYYY hh:mm:ss a") - : row[col.name].toLocaleString()} - - ); + if (col.datatype === "timestamp" && row[col.name]) { + return ( + {moment.utc(row[col.name]).format("MM/DD/YYYY hh:mm:ss a")} + ); + } + return {row[col.name].toLocaleString()}; } return null; };