UNPKG

bootstrap-vue

Version:

With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens

94 lines (80 loc) 3.04 kB
import { normalizeFields } from './normalize-fields' describe('table/helpers/normalize-fields', () => { it('uses first row of items when fields are not defined and items passed', async () => { const fields = normalizeFields(null, [ { foo: 1, bar: { a: 2 }, 'foo bar': 3, baz_bar: 4 }, { foo: 1, bar: { a: 2 }, 'foo bar': 3, baz: 5 } ]) expect(fields).toEqual([ { key: 'foo', label: 'Foo' }, { key: 'bar', label: 'Bar' }, { key: 'foo bar', label: 'Foo Bar' }, { key: 'baz_bar', label: 'Baz Bar' } ]) }) it('ignores special fields in items when fields are not defined and items passed', async () => { const fields = normalizeFields(null, [ { foo: 1, bar: 2, _showDetails: true, _rowVariant: 'primary', _cellVariants: ['primary', 'secondary', 'info'], baz: 3 } ]) expect(fields).toEqual([ { key: 'foo', label: 'Foo' }, { key: 'bar', label: 'Bar' }, { key: 'baz', label: 'Baz' } ]) }) it('returns and empty array when no fields or items passed', async () => { expect(normalizeFields(undefined, undefined)).toEqual([]) expect(normalizeFields(null, null)).toEqual([]) expect(normalizeFields([], undefined)).toEqual([]) expect(normalizeFields(undefined, [])).toEqual([]) expect(normalizeFields([], [])).toEqual([]) expect(normalizeFields({}, [])).toEqual([]) }) it('handles simple array as fields', async () => { const arr1 = ['foo', 'bar', 'foo_bar'] expect(normalizeFields(arr1, [])).toEqual([ { key: 'foo', label: 'Foo' }, { key: 'bar', label: 'Bar' }, { key: 'foo_bar', label: 'Foo Bar' } ]) }) it('handles mixed array format', async () => { const arr1 = ['foo', { bar: { label: 'Bar Label' } }, { baz: 'Baz Label' }] expect(normalizeFields(arr1, [])).toEqual([ { key: 'foo', label: 'Foo' }, { key: 'bar', label: 'Bar Label' }, { key: 'baz', label: 'Baz Label' } ]) }) it('handles formatter shortcut', async () => { const formatter = value => value const arr1 = [{ foo: formatter }] expect(normalizeFields(arr1, [])).toEqual([{ key: 'foo', label: 'Foo', formatter }]) }) it('handles when "key: false" shortcut', async () => { const arr1 = [{ foo: false }, { bar: 'BAR' }] // Should filter out when key uses false shortcut expect(normalizeFields(arr1, [])).toEqual([{ key: 'bar', label: 'BAR' }]) }) it('removes duplicate fields (preserving the first found)', async () => { const arr1 = ['foo', 'bar', 'foo', 'foo_bar'] const arr2 = [{ key: 'foo', label: 'Fiz' }, 'bar', 'foo', 'foo_bar'] expect(normalizeFields(arr1, [])).toEqual([ { key: 'foo', label: 'Foo' }, { key: 'bar', label: 'Bar' }, { key: 'foo_bar', label: 'Foo Bar' } ]) expect(normalizeFields(arr2, [])).toEqual([ { key: 'foo', label: 'Fiz' }, { key: 'bar', label: 'Bar' }, { key: 'foo_bar', label: 'Foo Bar' } ]) }) })