UNPKG

@bigfishtv/cockpit

Version:

68 lines (61 loc) 2.19 kB
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) }) })