@bigfishtv/cockpit
Version:
68 lines (61 loc) • 2.19 kB
JavaScript
import { sortProperty, multisort } from './sortUtils'
describe('sortProperty', () => {
test('sort by property asc', () => {
const input = [{ id: 1, order: 3 }, { id: 2, order: 2 }, { id: 3, order: -5 }]
input.sort(sortProperty('order'))
const expected = [{ id: 3, order: -5 }, { id: 2, order: 2 }, { id: 1, order: 3 }]
expect(input).toEqual(expected)
})
test('sort by property desc', () => {
const input = [{ id: 1, order: 3 }, { id: 3, order: -5 }, { id: 2, order: 2 }]
const expected = [{ id: 1, order: 3 }, { id: 2, order: 2 }, { id: 3, order: -5 }]
input.sort(sortProperty('order', 'desc'))
expect(input).toEqual(expected)
})
test('sort by boolean property', () => {
const input = [{ fixed: true }, { fixed: false }, { fixed: true }, { fixed: false }]
const expected = [{ fixed: false }, { fixed: false }, { fixed: true }, { fixed: true }]
input.sort(sortProperty('fixed'))
expect(input).toEqual(expected)
})
test('sort by boolean property desc', () => {
const input = [{ fixed: true }, { fixed: false }, { fixed: true }, { fixed: false }]
const expected = [{ fixed: true }, { fixed: true }, { fixed: false }, { fixed: false }]
input.sort(sortProperty('fixed', 'desc'))
expect(input).toEqual(expected)
})
})
describe('multisort', () => {
test('multisort with multiple sorters', () => {
const input = [
{ name: 'Janet', age: 30 },
{ name: 'Adam', age: 20 },
{ name: 'Adam', age: 15 },
{ name: 'Janet', age: 10 },
]
const expected = [
{ name: 'Adam', age: 15 },
{ name: 'Adam', age: 20 },
{ name: 'Janet', age: 10 },
{ name: 'Janet', age: 30 },
]
input.sort(multisort([sortProperty('name'), sortProperty('age')]))
expect(input).toEqual(expected)
})
test('multisort with multiple sorters 2', () => {
const input = [
{ name: 'Janet', age: 30 },
{ name: 'Adam', age: 20 },
{ name: 'Adam', age: 15 },
{ name: 'Janet', age: 10 },
]
const expected = [
{ name: 'Janet', age: 10 },
{ name: 'Adam', age: 15 },
{ name: 'Adam', age: 20 },
{ name: 'Janet', age: 30 },
]
input.sort(multisort([sortProperty('age'), sortProperty('name')]))
expect(input).toEqual(expected)
})
})