feat(plan5): API GET /api/creation/metafields (TDD)
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { GET } from './route'
|
||||
import * as shopifyMetafields from '@/lib/shopifyMetafields'
|
||||
import { getServerSession } from 'next-auth'
|
||||
|
||||
jest.mock('next-auth')
|
||||
jest.mock('@/lib/shopifyMetafields')
|
||||
|
||||
const mockSession = getServerSession as jest.MockedFunction<typeof getServerSession>
|
||||
const mockFetchDefs = shopifyMetafields.fetchMetafieldDefinitions as jest.MockedFunction<typeof shopifyMetafields.fetchMetafieldDefinitions>
|
||||
const mockMatch = shopifyMetafields.matchMetafields as jest.MockedFunction<typeof shopifyMetafields.matchMetafields>
|
||||
|
||||
describe('GET /api/creation/metafields', () => {
|
||||
beforeEach(() => {
|
||||
mockSession.mockResolvedValue({ user: { id: 'u1', role: 'admin' } } as never)
|
||||
mockFetchDefs.mockResolvedValue([
|
||||
{ id: '1', namespace: 'custom', key: 'puissance', name: 'Puissance', type: 'single_line_text_field' },
|
||||
])
|
||||
mockMatch.mockReturnValue({
|
||||
matched: { 'Puissance (AN)': { columnHeader: 'Puissance (AN)', action: 'map', namespace: 'custom', key: 'puissance', existingDefinitionId: '1' } },
|
||||
unmatched: ['Batterie (AP)'],
|
||||
})
|
||||
})
|
||||
|
||||
it('retourne 401 sans session', async () => {
|
||||
mockSession.mockResolvedValue(null)
|
||||
const res = await GET(new Request('http://localhost/api/creation/metafields?columns=Puissance') as never)
|
||||
expect(res.status).toBe(401)
|
||||
})
|
||||
|
||||
it('retourne définitions + matching', async () => {
|
||||
const res = await GET(new Request('http://localhost/api/creation/metafields?columns=Puissance+%28AN%29%2CBatterie+%28AP%29') as never)
|
||||
const body = await res.json()
|
||||
expect(body.definitions).toHaveLength(1)
|
||||
expect(body.matched['Puissance (AN)'].key).toBe('puissance')
|
||||
expect(body.unmatched).toContain('Batterie (AP)')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user