From 37e89b114da25cc6b840d01cfb0d2a024848daaa Mon Sep 17 00:00:00 2001 From: callmeroot Date: Tue, 10 Dec 2024 13:11:41 +0530 Subject: [PATCH] added unit tests for string sorting --- lib/KTable/useSorting/__tests__/index.spec.js | 20 ++++++------- lib/KTable/useSorting/index.js | 30 +++++++++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/lib/KTable/useSorting/__tests__/index.spec.js b/lib/KTable/useSorting/__tests__/index.spec.js index 42a8be538..9de16699d 100644 --- a/lib/KTable/useSorting/__tests__/index.spec.js +++ b/lib/KTable/useSorting/__tests__/index.spec.js @@ -21,7 +21,7 @@ describe('useSorting', () => { rows = ref([ ['John', 30, new Date(1990, 5, 15)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['Alice', 28, new Date(1992, 8, 10)], ]); @@ -52,7 +52,7 @@ describe('useSorting', () => { const { sortedRows } = useSorting(headers, rows, defaultSort, disableBuiltinSorting); expect(sortedRows.value).toEqual([ ['Alice', 28, new Date(1992, 8, 10)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['John', 30, new Date(1990, 5, 15)], ]); }); @@ -66,7 +66,7 @@ describe('useSorting', () => { const { sortedRows } = useSorting(headers, rows, defaultSort, disableBuiltinSorting); expect(sortedRows.value).toEqual([ ['John', 30, new Date(1990, 5, 15)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['Alice', 28, new Date(1992, 8, 10)], ]); }); @@ -79,7 +79,7 @@ describe('useSorting', () => { const { sortedRows } = useSorting(headers, rows, defaultSort, disableBuiltinSorting); expect(sortedRows.value).toEqual([ - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['Alice', 28, new Date(1992, 8, 10)], ['John', 30, new Date(1990, 5, 15)], ]); @@ -95,7 +95,7 @@ describe('useSorting', () => { expect(sortedRows.value).toEqual([ ['John', 30, new Date(1990, 5, 15)], ['Alice', 28, new Date(1992, 8, 10)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ]); }); }); @@ -144,7 +144,7 @@ describe('useSorting', () => { handleSort(0); // Sort by 'Name' expect(sortedRows.value).toEqual([ ['Alice', 28, new Date(1992, 8, 10)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['John', 30, new Date(1990, 5, 15)], ]); }); @@ -159,7 +159,7 @@ describe('useSorting', () => { handleSort(1); // Sort by 'Age' expect(sortedRows.value).toEqual([ - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['Alice', 28, new Date(1992, 8, 10)], ['John', 30, new Date(1990, 5, 15)], ]); @@ -169,14 +169,14 @@ describe('useSorting', () => { expect(sortedRows.value).toEqual([ ['John', 30, new Date(1990, 5, 15)], ['Alice', 28, new Date(1992, 8, 10)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ]); expect(sortOrder.value).toBe(SORT_ORDER_DESC); handleSort(1); // Sort by 'Age' again to default order expect(sortedRows.value).toEqual([ ['John', 30, new Date(1990, 5, 15)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ['Alice', 28, new Date(1992, 8, 10)], ]); expect(sortOrder.value).toBe(null); @@ -194,7 +194,7 @@ describe('useSorting', () => { expect(sortedRows.value).toEqual([ ['John', 30, new Date(1990, 5, 15)], ['Alice', 28, new Date(1992, 8, 10)], - ['Jane', 25, new Date(1995, 10, 20)], + ['jane', 25, new Date(1995, 10, 20)], ]); }); diff --git a/lib/KTable/useSorting/index.js b/lib/KTable/useSorting/index.js index c952d7688..b228b17b2 100644 --- a/lib/KTable/useSorting/index.js +++ b/lib/KTable/useSorting/index.js @@ -24,6 +24,20 @@ export default function useSorting(headers, rows, defaultSort, disableBuiltinSor const sortKey = ref(null); const sortOrder = ref(null); + /** + * Helper function to get the value for sorting. + * @param {Object} row - The row object. + * @param {Number} index - The index of the column to sort by. + * @returns {any} - The value to be used for sorting. + */ + const getSortValue = (row, index) => { + const value = row[index]; + if (typeof value === 'string') { + return value.toString().toLocaleLowerCase(); + } + return value; + }; + /** * Computed property that returns the sorted rows based on the current sort key and order. * If local sorting is disabled or no sort key is set, it returns the original rows. @@ -37,22 +51,14 @@ export default function useSorting(headers, rows, defaultSort, disableBuiltinSor return _.orderBy( rows.value, - [row => row[defaultSort.value.index]], - [defaultSort.value.direction], + [row => getSortValue(row, defaultSort.value.index)], + [defaultSort.value.direction] ); } return _.orderBy( rows.value, - [ - row => { - const value = row[sortKey.value]; - if (typeof value === 'string') { - return value.toString().toLocaleLowerCase(); - } - return value; - }, - ], + [row => getSortValue(row, sortKey.value)], [sortOrder.value] ); }); @@ -99,4 +105,4 @@ export default function useSorting(headers, rows, defaultSort, disableBuiltinSor handleSort, getAriaSort, }; -} +} \ No newline at end of file