From 8c94bc02c184e1d51e5a6c1d4a7126611589fdf8 Mon Sep 17 00:00:00 2001 From: exoego Date: Sun, 8 Sep 2024 09:22:36 +0900 Subject: [PATCH] bugfix: added failing test --- __tests__/compare.test.ts | 102 ++++++++++++++++++++++++++++++++++++++ src/compare.ts | 47 ++++++++++-------- 2 files changed, 127 insertions(+), 22 deletions(-) create mode 100644 __tests__/compare.test.ts diff --git a/__tests__/compare.test.ts b/__tests__/compare.test.ts new file mode 100644 index 0000000..7afcce1 --- /dev/null +++ b/__tests__/compare.test.ts @@ -0,0 +1,102 @@ +import {calculateTotalRow} from "../src/compare"; + +describe("calculateTotalRow", () => { + test("empty returns zero", () => { + expect(calculateTotalRow([])).toEqual({ + "baseBytes": 0, + "bytes": 0, + "metafile": "(Total)", + "outfile": "-", + "remark": "no-change", + "tree": undefined, + }) + }) + + describe("single row", () => { + test("given decreased, return decreased", () => { + expect(calculateTotalRow([{ + "baseBytes": 100, + "bytes": 50, + "metafile": "", + "outfile": "", + "remark": "decreased", + "tree": undefined, + }])).toEqual({ + "baseBytes": 100, + "bytes": 50, + "metafile": "(Total)", + "outfile": "-", + "remark": "decreased", + "tree": undefined, + }) + }) + test("given increased, return increased", () => { + expect(calculateTotalRow([{ + "baseBytes": 50, + "bytes": 100, + "metafile": "", + "outfile": "", + "remark": "increased", + "tree": undefined, + }])).toEqual({ + "baseBytes": 50, + "bytes": 100, + "metafile": "(Total)", + "outfile": "-", + "remark": "increased", + "tree": undefined, + }) + }) + test("given no-change, return no-change", () => { + expect(calculateTotalRow([{ + "baseBytes": 50, + "bytes": 50, + "metafile": "", + "outfile": "", + "remark": "no-change", + "tree": undefined, + }])).toEqual({ + "baseBytes": 50, + "bytes": 50, + "metafile": "(Total)", + "outfile": "-", + "remark": "no-change", + "tree": undefined, + }) + }) + test("given added, return increased", () => { + expect(calculateTotalRow([{ + "baseBytes": 0, + "bytes": 50, + "metafile": "", + "outfile": "", + "remark": "added", + "tree": undefined, + }])).toEqual({ + "baseBytes": 0, + "bytes": 50, + "metafile": "(Total)", + "outfile": "-", + "remark": "increased", + "tree": undefined, + }) + }) + test("given deleted, return decreased", () => { + expect(calculateTotalRow([{ + "baseBytes": 50, + "bytes": 0, + "metafile": "", + "outfile": "", + "remark": "deleted", + "tree": undefined, + }])).toEqual({ + "baseBytes": 50, + "bytes": 0, + "metafile": "(Total)", + "outfile": "-", + "remark": "decreased", + "tree": undefined, + }) + }) + }) +}) \ No newline at end of file diff --git a/src/compare.ts b/src/compare.ts index d142b64..8ca92bd 100644 --- a/src/compare.ts +++ b/src/compare.ts @@ -234,35 +234,38 @@ function filesize(bytes: number): string { throw new Error("Too large file size!! Are you sure?"); } +export function calculateTotalRow(data: Array): CompareResult { + const totalRow = data.reduce( + (acc, d) => { + const { bytes, baseBytes, ...rest } = acc; + return { + ...rest, + baseBytes: baseBytes + d.baseBytes, + bytes: bytes + d.bytes, + }; + }, + { + baseBytes: 0, + bytes: 0, + metafile: "(Total)", + outfile: "-", + remark: "added", + tree: undefined, + }, + ); + totalRow.remark = + totalRow.bytes > totalRow.baseBytes ? "increased" : "decreased"; + return totalRow +} + function markdownTable( data: Array, sizeComparisonFilters: Set, redThreshold: number, ): string { - const totalRow = data.reduce( - (acc, d) => { - const { bytes, baseBytes, ...rest } = acc; - return { - ...rest, - baseBytes: baseBytes + d.baseBytes, - bytes: bytes + d.bytes, - }; - }, - { - baseBytes: 0, - bytes: 0, - metafile: "(Total)", - outfile: "-", - remark: "added", - tree: undefined, - }, - ); - totalRow.remark = - totalRow.bytes > totalRow.baseBytes ? "increased" : "decreased"; const totalRows: Array = sizeComparisonFilters.has("total") - ? [totalRow] + ? [calculateTotalRow(data)] : []; - const individualRows = data.filter((d) => sizeComparisonFilters.has(d.remark), );