UNPKG

sanity-plugin-taxonomy-manager

Version:

Create and manage SKOS compliant taxonomies, thesauri, and classification schemes in Sanity Studio.

49 lines (40 loc) 1.74 kB
import {describe, expect, it, vi} from 'vitest' import {branchFilter} from './branchFilter' type FilterProps = Parameters<ReturnType<typeof branchFilter>>[0] function stubProps(result: {concepts: string[]}) { const fetch = vi.fn().mockResolvedValue(result) const getClient = vi.fn(() => ({fetch})) return {props: {getClient} as unknown as FilterProps, fetch, getClient} } describe('branchFilter', () => { it('throws synchronously when schemeId is missing or not a string', () => { expect(() => branchFilter({branchId: 'd4e5f6'} as never)).toThrow( 'Invalid or missing schemeId: scheme Id must be a string', ) }) it('throws synchronously when branchId is missing or not a string', () => { expect(() => branchFilter({schemeId: 'abc123'} as never)).toThrow( 'Invalid or missing branchId: branch Id must be a string', ) }) it('fetches with apiVersion 2023-01-01 and returns the filter, params, and options', async () => { const {props, fetch, getClient} = stubProps({concepts: ['concept-x', 'concept-y']}) const result = await branchFilter({ schemeId: 'abc123', branchId: 'd4e5f6', expanded: true, browseOnly: true, })(props) expect(getClient).toHaveBeenCalledWith({apiVersion: '2023-01-01'}) expect(result.filter).toMatchInlineSnapshot(`"_id in $concepts"`) expect(result.params).toEqual({ concepts: ['concept-x', 'concept-y'], schemeId: 'abc123', branchId: 'd4e5f6', }) expect(result.expanded).toBe(true) expect(result.browseOnly).toBe(true) // schemeId and branchId are passed as GROQ params (not interpolated) expect(fetch.mock.calls[0]?.[1]).toEqual({schemeId: 'abc123', branchId: 'd4e5f6'}) }) })