describe('NoteListControls compact text logic', () => { it('uses concise labels in single-line mode or medium breakpoint', () => { const getNoteButtonText = (breakpoint: number, dynamicBreakpoints: any, lineCount: number) => { if (breakpoint === dynamicBreakpoints.Sm) { return ''; } else if (breakpoint === dynamicBreakpoints.Md || lineCount === 1) { return '笔记'; } else { return '新建笔记'; } }; const getTodoButtonText = (breakpoint: number, dynamicBreakpoints: any, lineCount: number) => { if (breakpoint === dynamicBreakpoints.Sm) { return ''; } else if (breakpoint === dynamicBreakpoints.Md || lineCount === 1) { return '待办'; } else { return '新建待办'; } }; const dynamicBreakpoints = { Sm: 100, Md: 200, Lg: 300, Xl: 400 }; // Single line mode should always use concise 2-char labels to preserve search bar space expect(getNoteButtonText(dynamicBreakpoints.Xl, dynamicBreakpoints, 1)).toBe('笔记'); expect(getTodoButtonText(dynamicBreakpoints.Xl, dynamicBreakpoints, 1)).toBe('待办'); // Small breakpoint should collapse to icon-only (empty string) expect(getNoteButtonText(dynamicBreakpoints.Sm, dynamicBreakpoints, 2)).toBe(''); expect(getTodoButtonText(dynamicBreakpoints.Sm, dynamicBreakpoints, 2)).toBe(''); }); });