Files
Inventory/frontend/tests/shared/apiHelpers.test.ts
Matthieu 974a4a0781 refactor : merge Inventory_frontend submodule into frontend/ directory
Merges the full git history of Inventory_frontend into the monorepo
under frontend/. Removes the submodule in favor of a unified repo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:17:57 +02:00

51 lines
1.5 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { extractCollection } from '~/shared/utils/apiHelpers'
describe('extractCollection', () => {
it('returns the input if it is already an array', () => {
const items = [{ id: 1 }, { id: 2 }]
expect(extractCollection(items)).toEqual(items)
})
it('extracts from hydra:member', () => {
const payload = { 'hydra:member': [{ id: 1 }], 'hydra:totalItems': 1 }
expect(extractCollection(payload)).toEqual([{ id: 1 }])
})
it('extracts from member', () => {
const payload = { member: [{ id: 1 }, { id: 2 }] }
expect(extractCollection(payload)).toEqual([{ id: 1 }, { id: 2 }])
})
it('extracts from items', () => {
const payload = { items: [{ id: 1 }] }
expect(extractCollection(payload)).toEqual([{ id: 1 }])
})
it('extracts from data', () => {
const payload = { data: [{ id: 1 }] }
expect(extractCollection(payload)).toEqual([{ id: 1 }])
})
it('prefers member over hydra:member', () => {
const payload = { member: [{ id: 'member' }], 'hydra:member': [{ id: 'hydra' }] }
expect(extractCollection(payload)).toEqual([{ id: 'member' }])
})
it('returns empty array for null', () => {
expect(extractCollection(null)).toEqual([])
})
it('returns empty array for undefined', () => {
expect(extractCollection(undefined)).toEqual([])
})
it('returns empty array for empty object', () => {
expect(extractCollection({})).toEqual([])
})
it('returns empty array for string', () => {
expect(extractCollection('not an object')).toEqual([])
})
})