import { makeCSV, makeTable, parseField } from '../cuesheetUtils'; describe('parseField()', () => { it('returns a string from given millis on timeStart and TimeEnd', () => { const testData1 = 1000; const testData2 = 60000; expect(parseField('timeStart', testData1)).toBe('00:00:01'); expect(parseField('timeEnd', testData2)).toBe('00:01:00'); expect(parseField('timeEnd', testData2)).toBe('00:01:00'); }); describe('returns an x when isPublic is truthy, empty string otherwise', () => { const testTruthy = [1, true, 'x', 'test']; const testFalsy = ['', null, undefined, false, 0]; testTruthy.forEach((value) => { test(`${value}`, () => { expect(parseField('isPublic', value)).toBe('x'); }); }); testFalsy.forEach((value) => { test(`${value}`, () => { expect(parseField('isPublic', value)).toBe(''); }); }); }); it('returns an empty string on undefined fields', () => { expect(parseField('presenter')).toBe(''); }); describe('simply returns any other value in any other field', () => { const testFields = [ { field: 'nothing', value: 123 }, { field: 'title', value: 'test' }, { field: 'presenter', value: 'test' }, { field: 'subtitle', value: 'test' }, { field: 'note', value: 'test' }, { field: 'colour', value: 'test' }, { field: 'user0', value: 'test' }, { field: 'user1', value: 'test' }, { field: 'user2', value: 'test' }, { field: 'user3', value: 'test' }, { field: 'user4', value: 'test' }, { field: 'user5', value: 'test' }, { field: 'user6', value: 'test' }, { field: 'user7', value: 'test' }, { field: 'user8', value: 'test' }, { field: 'user9', value: 'test' }, ]; testFields.forEach((testCase) => { test(`${testCase.field}:${testCase.value}`, () => { expect(parseField(testCase.field, testCase.value)).toBe(testCase.value); }); }); }); }); describe('makeTable()', () => { it('returns array of arrays with given fields', () => { const headerData = {}; const tableData = [ { title: 'test title 1', presenter: '', timeStart: 0, timeEnd: 0, isPublic: 'x', user0: 'test', user1: 'test', }, ]; const userFields = { user0: 'test', }; const table = makeTable(headerData, tableData, userFields); expect(table).toMatchSnapshot(); }); }); describe('make CSV()', () => { it('joins an array of arrays with commas and newlines', () => { const testdata = [['field'], ['after newline', 'after comma'], ['', 'after empty']]; expect(makeCSV(testdata)).toMatchInlineSnapshot(` "field after newline,after comma ,after empty " `); }); });