[Phase 5] Tests unitaires pour fractal-gtk (composants non-UI) #320

Open
opened 2026-04-06 09:36:28 +00:00 by charles · 0 comments
Owner

Contexte

La spec section 9.1 stipule : "tests unitaires pour chaque crate". fractal-gtk contient des modules avec de la logique métier testable sans GTK, notamment les modèles de préférences STT, le mode Zen, et les exports.

Les widgets GTK eux-mêmes ne sont pas testés unitairement (nécessite un display), mais les modèles et états qui les pilotent le sont.

Critères d'acceptation

  • crates/fractal-gtk/src/stt_prefs_model.rs — tests du modèle de préférences STT (sélection moteur, taille modèle, validation)
  • crates/fractal-gtk/src/qol.rs — tests des fonctions de QoL pures (formatage, filtrage)
  • crates/fractal-gtk/src/zen_mode.rs — tests de la machine à état ZenMode (activation, désactivation, état initial)

Ne pas tenter de tester :

  • Les widgets GTK qui nécessitent un display (GtkWidget, GtkWindow, etc.)

  • Le canvas WebView (nécessite un runtime webkit2gtk)

  • cargo test -p fractal-gtk passe en CI (avec GDK_BACKEND=offscreen si nécessaire ou #[cfg(test)] guards)

Notes techniques

  • Séparer la logique métier de la logique d'affichage dans les modules concernés si nécessaire (pattern "model/view")
  • Les tests peuvent cibler uniquement les fonctions pures avec #[test] dans des blocs #[cfg(test)]
  • La CI peut utiliser GDK_BACKEND=offscreen pour initialiser GTK sans display
## Contexte La spec section 9.1 stipule : "tests unitaires pour chaque crate". `fractal-gtk` contient des modules avec de la logique métier testable sans GTK, notamment les modèles de préférences STT, le mode Zen, et les exports. Les widgets GTK eux-mêmes ne sont pas testés unitairement (nécessite un display), mais les modèles et états qui les pilotent le sont. ## Critères d'acceptation - [ ] `crates/fractal-gtk/src/stt_prefs_model.rs` — tests du modèle de préférences STT (sélection moteur, taille modèle, validation) - [ ] `crates/fractal-gtk/src/qol.rs` — tests des fonctions de QoL pures (formatage, filtrage) - [ ] `crates/fractal-gtk/src/zen_mode.rs` — tests de la machine à état ZenMode (activation, désactivation, état initial) <br> Ne pas tenter de tester : - Les widgets GTK qui nécessitent un display (GtkWidget, GtkWindow, etc.) - Le canvas WebView (nécessite un runtime webkit2gtk) - [ ] `cargo test -p fractal-gtk` passe en CI (avec `GDK_BACKEND=offscreen` si nécessaire ou `#[cfg(test)]` guards) ## Notes techniques - Séparer la logique métier de la logique d'affichage dans les modules concernés si nécessaire (pattern "model/view") - Les tests peuvent cibler uniquement les fonctions pures avec `#[test]` dans des blocs `#[cfg(test)]` - La CI peut utiliser `GDK_BACKEND=offscreen` pour initialiser GTK sans display
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#320
No description provided.