| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { describe, expect, it, vi } from 'vitest'
- import type { PrivateApp } from '../PrivateApps.types'
- import type { AppsSort } from './Apps.types'
- import { handleSortChange, sortApps } from './Apps.utils'
- describe('handleSortChange', () => {
- it('toggles from asc to desc when clicking the same column', () => {
- const setSort = vi.fn()
- handleSortChange('created_at:asc', 'created_at', setSort)
- expect(setSort).toHaveBeenCalledWith('created_at:desc')
- })
- it('toggles from desc to asc when clicking the same column', () => {
- const setSort = vi.fn()
- handleSortChange('created_at:desc', 'created_at', setSort)
- expect(setSort).toHaveBeenCalledWith('created_at:asc')
- })
- it('defaults to asc when switching to a different column', () => {
- const setSort = vi.fn()
- handleSortChange('created_at:desc', 'name', setSort)
- expect(setSort).toHaveBeenCalledWith('name:asc')
- })
- })
- const makeApp = (id: string, created_at: string): PrivateApp =>
- ({
- id,
- name: id,
- created_at,
- description: '',
- }) as unknown as PrivateApp
- describe('sortApps', () => {
- const apps = [
- makeApp('b', '2024-01-02T00:00:00Z'),
- makeApp('a', '2024-01-01T00:00:00Z'),
- makeApp('c', '2024-01-03T00:00:00Z'),
- ]
- it('sorts in ascending order', () => {
- const sorted = sortApps(apps, 'created_at:asc' as AppsSort)
- expect(sorted.map((a) => a.id)).toEqual(['a', 'b', 'c'])
- })
- it('sorts in descending order', () => {
- const sorted = sortApps(apps, 'created_at:desc' as AppsSort)
- expect(sorted.map((a) => a.id)).toEqual(['c', 'b', 'a'])
- })
- it('does not mutate the original array', () => {
- const original = [...apps]
- sortApps(apps, 'created_at:asc' as AppsSort)
- expect(apps).toEqual(original)
- })
- })
|