import { MiscHelpersService } from './misc-helpers.service'; ​ describe('MiscHelpersService', () => { const service = new MiscHelpersService(); const offset = new Date().getTimezoneOffset(); const timeZoneOffset = Math.abs(offset / 60).toFixed(0); const timeZoneOffsetPadded = parseInt(timeZoneOffset, 10) < 10 ? `0${timeZoneOffset}` : timeZoneOffset; const timeZoneOffsetFormatted = `${offset > 0 ? '-' : '+'}${timeZoneOffsetPadded}:00`; ​ it('formatMediumDate: should create medium date from date string', () => { const date1 = `2018-10-05T00:00:00.000${timeZoneOffsetFormatted}`; expect(service.formatMediumDate(date1)).toBe('Oct 5, 2018'); const date2 = `2019-07-12T00:00:00.000${timeZoneOffsetFormatted}`; expect(service.formatMediumDate(date2)).toBe('Jul 12, 2019'); const date3 = ''; expect(service.formatMediumDate(date3)).toBe(''); const date4 = `2018-16-40T00:00:00.000${timeZoneOffsetFormatted}`; expect(service.formatMediumDate(date4)).toBe(''); }); ​ ​ it('formatUSD: should create price format with dollar sign and two decimals', () => { const price1 = 2; expect(service.formatUSD(price1)).toBe('$2.00'); const price2 = 2.4555; expect(service.formatUSD(price2)).toBe('$2.46'); const price3 = 0.3; expect(service.formatUSD(price3)).toBe('$0.30'); const price4 = 0; expect(service.formatUSD(price4)).toBe('$0.00'); const price5 = null; expect(service.formatUSD(price5)).toBe('$0.00'); }); ​ it('createSearchText: should delimit inputs with null characters', () => { const input1 = []; expect(service.createSearchText(...input1)).toBe(''); const input2 = ['a']; expect(service.createSearchText(...input2)).toBe('a'); const input3 = ['a', 'b']; expect(service.createSearchText(...input3)).toBe('a' + '\0' + 'b'); const input4 = ['a', 'b', 'foo', 0, 1]; expect(service.createSearchText(...input4)).toBe('a' + '\0' + 'b' + '\0' + 'foo' + '\0' + '0' + '\0' + '1'); }); ​ it('createSearchText: should prevent wrapping between adjacent search inputs', () => { const rows = [['foo', 'bar', 100, 50], ['oob', 'oob', 50, 100], ['bar', 'baz', 100, 50]]; const containsTextFilter = textFilter => columns => { const allText = service.createSearchText(...columns); return allText.toLocaleLowerCase().indexOf(textFilter.toLocaleLowerCase()) >= 0; }; ​ expect(rows.filter(containsTextFilter('oo'))).toEqual([['foo', 'bar', 100, 50], ['oob', 'oob', 50, 100]]); expect(rows.filter(containsTextFilter('oob'))).toEqual([['oob', 'oob', 50, 100]]); expect(rows.filter(containsTextFilter('501'))).toEqual([]); expect(rows.filter(containsTextFilter('100'))).toEqual([ ['foo', 'bar', 100, 50], ['oob', 'oob', 50, 100], ['bar', 'baz', 100, 50], ]); }); });