[Phase 5] Tests unitaires pour fractal-ext #323

Open
opened 2026-04-06 14:03:53 +00:00 by charles · 0 comments
Owner

Contexte

Toutes les autres crates ont une issue de tests dédiée (#316 fractal-ai, #317 fractal-rich, #318 fractal-bridge, #319 fractal-core, #320 fractal-gtk, #321 fractal-stt). fractal-ext est la seule manquante, alors qu'elle contient l'infrastructure centrale du projet.

Un fichier crates/fractal-ext/src/tests.rs existe déjà — cette issue vise à s'assurer que la couverture est complète et cohérente avec les autres crates.

Critères d'acceptation

  • EventBus::dispatch() : les extensions enregistrées reçoivent bien les événements
  • EventBus : une extension qui retourne une erreur ne bloque pas les autres
  • CommandRegistry : enregistrement dynamique et résolution de commandes slash
  • Trait Extension : cycle de vie on_init / on_sync_event / on_command / message_decorations
  • Snippets (SnippetStore) : CRUD, substitution de variables {{nom}} / {{date}}
  • Export (ConversationExporter) : génération PDF, Markdown, HTML
  • Tests dans src/tests.rs ou tests/ selon convention upstream Fractal
  • cargo test -p fractal-ext passe sans warning ni erreur

Notes techniques

  • Crate : crates/fractal-ext/
  • Modules concernés : event_bus.rs, registry.rs, extension.rs, snippets.rs, export.rs, command.rs, context.rs, decoration.rs
  • Utiliser des implémentations mock du trait Extension pour tester l'EventBus en isolation
  • L'EventBus est async (async fn dispatch) — utiliser tokio::test
## Contexte Toutes les autres crates ont une issue de tests dédiée (#316 fractal-ai, #317 fractal-rich, #318 fractal-bridge, #319 fractal-core, #320 fractal-gtk, #321 fractal-stt). `fractal-ext` est la seule manquante, alors qu'elle contient l'infrastructure centrale du projet. Un fichier `crates/fractal-ext/src/tests.rs` existe déjà — cette issue vise à s'assurer que la couverture est complète et cohérente avec les autres crates. ## Critères d'acceptation - [ ] `EventBus::dispatch()` : les extensions enregistrées reçoivent bien les événements - [ ] `EventBus` : une extension qui retourne une erreur ne bloque pas les autres - [ ] `CommandRegistry` : enregistrement dynamique et résolution de commandes slash - [ ] Trait `Extension` : cycle de vie `on_init` / `on_sync_event` / `on_command` / `message_decorations` - [ ] Snippets (`SnippetStore`) : CRUD, substitution de variables `{{nom}}` / `{{date}}` - [ ] Export (`ConversationExporter`) : génération PDF, Markdown, HTML - [ ] Tests dans `src/tests.rs` ou `tests/` selon convention upstream Fractal - [ ] `cargo test -p fractal-ext` passe sans warning ni erreur ## Notes techniques - Crate : `crates/fractal-ext/` - Modules concernés : `event_bus.rs`, `registry.rs`, `extension.rs`, `snippets.rs`, `export.rs`, `command.rs`, `context.rs`, `decoration.rs` - Utiliser des implémentations mock du trait `Extension` pour tester l'EventBus en isolation - L'`EventBus` est async (`async fn dispatch`) — utiliser `tokio::test`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#323
No description provided.