Keep forward nodes out of ordinary message parameters and expose a node-only root builder for forward send and upload actions. Lock nested forward content to one valid shape, clear stale form values when switching actions, and add regression coverage for the capability rules.
36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
messageBuilderSegmentKinds,
|
|
newSeg,
|
|
} from '../src/components/debug/message-builder';
|
|
import { messageBuilderModeForAction } from '../src/components/debug/param-field';
|
|
|
|
describe('action message builder capabilities', () => {
|
|
it('does not offer forward nodes in ordinary message parameters', () => {
|
|
expect(messageBuilderSegmentKinds('message', [])).not.toContain('node');
|
|
});
|
|
|
|
it('only offers forward nodes at the root of forward actions', () => {
|
|
expect(messageBuilderSegmentKinds('forward', [])).toEqual(['node']);
|
|
});
|
|
|
|
it('locks nested forward content to nodes once a nested node is present', () => {
|
|
expect(messageBuilderSegmentKinds('node-content', [newSeg('node')])).toEqual(['node']);
|
|
});
|
|
|
|
it('keeps ordinary nested content free of nodes and window shakes', () => {
|
|
const kinds = messageBuilderSegmentKinds('node-content', [newSeg('text')]);
|
|
expect(kinds).not.toContain('node');
|
|
expect(kinds).not.toContain('poke');
|
|
});
|
|
|
|
it('selects the forward-only builder for every forward action', () => {
|
|
expect(messageBuilderModeForAction('send_forward_msg')).toBe('forward');
|
|
expect(messageBuilderModeForAction('send_group_forward_msg')).toBe('forward');
|
|
expect(messageBuilderModeForAction('send_private_forward_msg')).toBe('forward');
|
|
expect(messageBuilderModeForAction('upload_forward_msg')).toBe('forward');
|
|
expect(messageBuilderModeForAction('upload_foward_msg')).toBe('forward');
|
|
expect(messageBuilderModeForAction('send_msg')).toBe('message');
|
|
});
|
|
});
|