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
JavaScript
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' }
])
})
})