|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
import { describe, it, expect } from 'vitest';
|
|
|
|
|
import {validateAttValue} from "@/vcen/validation.ts";
|
|
|
|
|
import type {OptID} from "@/vcen/types";
|
|
|
|
|
import {toOptID } from "@/vcen/node_util.ts";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
|
@ -270,15 +271,15 @@ describe('option / list', () => {
|
|
|
|
|
const domain = {
|
|
|
|
|
kind: 'option' as const,
|
|
|
|
|
mode: 'list' as const,
|
|
|
|
|
list: ['op:rojo', 'op:verde', 'op:azul'] as const as unknown as OptID[],
|
|
|
|
|
list: [toOptID('rojo'),toOptID('verde'),toOptID('azul')] as OptID[],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
it('acepta OptID en lista', () => {
|
|
|
|
|
expect(validateAttValue({ domain, value: 'op:rojo' as unknown as OptID })).toEqual(valid);
|
|
|
|
|
expect(validateAttValue({ domain, value: toOptID('rojo') })).toEqual(valid);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('rechaza OptID fuera de lista', () => {
|
|
|
|
|
expect(validateAttValue({ domain, value: 'op:negro' as unknown as OptID })).toEqual(invalid('VALUE_NOT_IN_LIST'));
|
|
|
|
|
expect(validateAttValue({ domain, value: toOptID('negro') })).toEqual(invalid('VALUE_NOT_IN_LIST'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('rechaza número como OptID', () => {
|
|
|
|
|
@ -290,12 +291,12 @@ describe('option / multiple', () => {
|
|
|
|
|
const domain = {
|
|
|
|
|
kind: 'option' as const,
|
|
|
|
|
mode: 'list' as const,
|
|
|
|
|
list: ['op:a', 'op:b', 'op:c'] as unknown as OptID[],
|
|
|
|
|
list: [toOptID('a'), toOptID('b'), toOptID('c')] as OptID[],
|
|
|
|
|
multiple: { min: 1, max: 2 },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
it('acepta selección múltiple válida', () => {
|
|
|
|
|
expect(validateAttValue({ domain, value: ['op:a', 'op:b'] as unknown as OptID[] })).toEqual(valid);
|
|
|
|
|
expect(validateAttValue({ domain, value: [toOptID('a'),toOptID('b')] as OptID[] })).toEqual(valid);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('rechaza selección vacía', () => {
|
|
|
|
|
@ -303,7 +304,7 @@ describe('option / multiple', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('rechaza más opciones del máximo', () => {
|
|
|
|
|
expect(validateAttValue({ domain, value: ['op:a', 'op:b', 'op:c'] as unknown as OptID[] })).toEqual(invalid('MULTIPLE_TOO_MANY'));
|
|
|
|
|
expect(validateAttValue({ domain, value: [toOptID('a'),toOptID ('b'), toOptID('c')] as unknown as OptID[] })).toEqual(invalid('MULTIPLE_TOO_MANY'));
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|