Files
clide/test/kernel/src/commands/palette_test.dart
T
jpmschweitzerandClaude Opus 4.6 46329700d5 dissolve app/ into repo root (D-056)
Single Flutter package at the repo root. All code, tests, assets,
and platform directories moved from app/ to root. Package renamed
from clide_app to clide — all imports rewritten. Merged pubspec
combines core (ffi) and app (flutter, yaml, xterm) dependencies.
Makefile simplified: no APP_PRESENT conditionals, no cd, no daemon
lifecycle. 317 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 00:37:20 +02:00

62 lines
1.8 KiB
Dart

import 'package:clide/clide.dart';
import 'package:clide/extension/extension.dart';
import 'package:clide/kernel/kernel.dart';
import 'package:flutter_test/flutter_test.dart';
CommandContribution _cmd(String id, {String? title}) => CommandContribution(
id: id,
command: id,
title: title,
run: (_) async => IpcResponse.ok(id: '', data: const {}),
);
void main() {
group('PaletteController', () {
late CommandRegistry registry;
late PaletteController palette;
setUp(() {
registry = CommandRegistry();
registry.register(_cmd('git.commit', title: 'Git: Commit'));
registry.register(_cmd('git.push', title: 'Git: Push'));
registry.register(_cmd('theme.pick', title: 'Theme: Pick…'));
palette = PaletteController(registry);
});
test('open/close toggles isOpen and clears filter', () {
palette.open();
palette.setFilter('git');
expect(palette.isOpen, true);
expect(palette.filter, 'git');
palette.close();
expect(palette.isOpen, false);
expect(palette.filter, '');
});
test('filtered empty filter returns all commands', () {
expect(palette.filtered().length, 3);
});
test('filter is case-insensitive against title or command', () {
palette.setFilter('git');
expect(
palette.filtered().map((c) => c.command).toSet(),
{'git.commit', 'git.push'},
);
palette.setFilter('PICK');
expect(
palette.filtered().map((c) => c.command).toSet(),
{'theme.pick'},
);
});
test('invoke closes the palette + runs the command', () async {
palette.open();
palette.setFilter('git');
await palette.invoke('git.commit');
expect(palette.isOpen, false);
expect(palette.filter, '');
});
});
}