57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { buildActionPoliciesFromEnvelope } from '../../../src/renderer/navigation/protocolActionPolicies';
|
|
|
|
describe('buildActionPoliciesFromEnvelope', () => {
|
|
it('preserves server-provided action policies', () => {
|
|
const result = buildActionPoliciesFromEnvelope({
|
|
actions: [
|
|
{
|
|
id: 'a1',
|
|
action: 'openSettings',
|
|
policy: 'confirm',
|
|
requiresConfirmation: true,
|
|
},
|
|
],
|
|
needsInput: {
|
|
required: false,
|
|
fields: [],
|
|
},
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
openSettings: 'confirm',
|
|
});
|
|
});
|
|
|
|
it('adds confirm policy for submitNeedsInput when clarification is required', () => {
|
|
const result = buildActionPoliciesFromEnvelope({
|
|
actions: [],
|
|
needsInput: {
|
|
required: true,
|
|
fields: [{ key: 'date', label: 'Date', inputType: 'date' }],
|
|
},
|
|
});
|
|
|
|
expect(result.submitNeedsInput).toBe('confirm');
|
|
});
|
|
|
|
it('does not override explicit server policy for submitNeedsInput', () => {
|
|
const result = buildActionPoliciesFromEnvelope({
|
|
actions: [
|
|
{
|
|
id: 'a1',
|
|
action: 'submitNeedsInput',
|
|
policy: 'danger',
|
|
requiresConfirmation: true,
|
|
},
|
|
],
|
|
needsInput: {
|
|
required: true,
|
|
fields: [{ key: 'title', label: 'Title', inputType: 'text' }],
|
|
},
|
|
});
|
|
|
|
expect(result.submitNeedsInput).toBe('danger');
|
|
});
|
|
});
|