From e1f06ffbcd9371975c4df20365fe437ce088a1a7 Mon Sep 17 00:00:00 2001 From: Jeff Andersen Date: Thu, 26 Nov 2020 13:43:12 -0400 Subject: [PATCH] Support null or false to omit header row --- src/modules/convert-array-of-objects-to-csv.js | 2 +- test/fixtures/expected-results.js | 2 ++ test/fixtures/options.js | 5 +++++ test/modules/convert-array-of-objects-to-csv.spec.js | 8 ++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/convert-array-of-objects-to-csv.js b/src/modules/convert-array-of-objects-to-csv.js index c52f593..47d51c7 100644 --- a/src/modules/convert-array-of-objects-to-csv.js +++ b/src/modules/convert-array-of-objects-to-csv.js @@ -15,7 +15,7 @@ export const convertArrayOfObjectsToCSV = (data, { header, separator }) => { array.forEach((row, idx) => { const thisRow = Object.keys(row); - if (!header && idx === 0) { + if (header === undefined && idx === 0) { thisRow.forEach((key, i) => { const value = valueOrEmpty(key); diff --git a/test/fixtures/expected-results.js b/test/fixtures/expected-results.js index fe4a5a4..6e99a74 100644 --- a/test/fixtures/expected-results.js +++ b/test/fixtures/expected-results.js @@ -2,6 +2,8 @@ export const expectedResultArrayNoHeaderNoOptions = '1,Mark,Otto,@mdo\n2,Jacob,T export const expectedResultObjectNoOptions = 'number,first,last,handle\n1,Mark,Otto,@mdo\n2,Jacob,Thornton,@fat\n3,Larry,the Bird,@twitter\n'; +export const expectedResultObjectNoHeader = '1,Mark,Otto,@mdo\n2,Jacob,Thornton,@fat\n3,Larry,the Bird,@twitter\n'; + export const expectedResultObjectOnlyHeader = 'Number,First,Last,Handle\n1,Mark,Otto,@mdo\n2,Jacob,Thornton,@fat\n3,Larry,the Bird,@twitter\n'; export const expectedResultObjectNullAndUndefined = 'Number,First,Last,Handle\n1,Mark,"",@mdo\n2,Jacob,Thornton,""\n3,Larry,the Bird,@twitter\n'; diff --git a/test/fixtures/options.js b/test/fixtures/options.js index cc154ed..177ff23 100644 --- a/test/fixtures/options.js +++ b/test/fixtures/options.js @@ -3,6 +3,11 @@ export const optionsHeaderSeparatorDefault = { separator: ',', }; +export const optionsNullHeaderSeparatorDefault = { + header: null, + separator: ',', +}; + export const optionsHeaderWithSpacesSeparatorDefault = { header: ['number number', 'first', 'last', 'handle'], separator: ',', diff --git a/test/modules/convert-array-of-objects-to-csv.spec.js b/test/modules/convert-array-of-objects-to-csv.spec.js index 918694d..15cc505 100644 --- a/test/modules/convert-array-of-objects-to-csv.spec.js +++ b/test/modules/convert-array-of-objects-to-csv.spec.js @@ -10,6 +10,7 @@ import { import { optionsHeaderSeparatorSemicolon, optionsHeaderSeparatorDefault, + optionsNullHeaderSeparatorDefault, optionsHeaderDefaultSeparatorTab, optionsDefault, optionsHeaderZero, @@ -19,6 +20,7 @@ import { expectedResultObjectNoOptions, expectedResultObjectHeaderSeparatorSemicolon, expectedResultObjectOnlyHeader, + expectedResultObjectNoHeader, expectedResultObjectOnlySeparatorTab, expectedResultObjectNullAndUndefined, expectedResultObjectWithDoubleQuotesInsideElement, @@ -50,6 +52,12 @@ test('convertArrayOfObjectsToCSV | array of objects | options: header + default expect(result).toBe(expectedResultObjectOnlyHeader); }); +test('convertArrayOfObjectsToCSV | array of objects | options: header = null + default separator', () => { + const result = convertArrayOfObjectsToCSV(dataObject, optionsNullHeaderSeparatorDefault); + + expect(result).toBe(expectedResultObjectNoHeader); +}); + test('convertArrayOfObjectsToCSV | array of objects | options: default header + separator tab', () => { const result = convertArrayOfObjectsToCSV(dataObject, optionsHeaderDefaultSeparatorTab);