Premiere commit - Omika

This commit is contained in:
2026-10-23 18:46:50 +02:00
commit 8ea76c1b24
2155 changed files with 984301 additions and 0 deletions
@@ -0,0 +1,72 @@
using System;
using System.Linq;
using System.Threading;
using Avalonia.Controls;
using Avalonia.Headless;
using Avalonia.VisualTree;
using Xunit;
namespace Omika.Tests.Mobile;
/// <summary>
/// Régression : l'agenda personnel n'affiche plus les trois blocs statistiques
/// (« Rendez-vous », « Liés à une intervention », « Autonomes »). Ces compteurs
/// faisaient doublon avec le bandeau de la journée et alourdissaient l'écran.
/// </summary>
/// <remarks>
/// Le test ouvre la vue RÉELLE et parcourt l'arbre visuel : il ne dépend ni des
/// données ni des services (aucun ViewModel n'est nécessaire, les libellés
/// vérifiés sont écrits en dur dans le XAML). Il rejoint la collection
/// « ApplicationRuntimeContext » car le localisateur d'Avalonia est global au
/// processus.
/// </remarks>
[Collection("ApplicationRuntimeContext")]
public sealed class AgendaSansCartesStatistiquesTests : IDisposable
{
private readonly HeadlessUnitTestSession _session =
HeadlessUnitTestSession.StartNew(typeof(LayoutTestAppBuilder));
public void Dispose() => _session.Dispose();
[Fact]
public void AgendaPersonnel_N_AffichePlusLesTroisBlocsStatistiques()
{
_session.Dispatch(
() =>
{
Window fenetre = MesureGeometrique.Ouvrir(new Omika.App.Views.AgendaView(), 360);
Control[] descendants = fenetre.GetVisualDescendants().OfType<Control>().ToArray();
// 1. Aucune carte statistique (classe de style dédiée).
string[] cartes = descendants
.OfType<Border>()
.Where(b => b.Classes.Contains("statCard"))
.Select(_ => "statCard")
.ToArray();
Assert.Empty(cartes);
// 2. Aucun des libellés des trois blocs supprimés.
string[] textes = descendants
.OfType<TextBlock>()
.Where(t => !string.IsNullOrWhiteSpace(t.Text))
.Select(t => t.Text!)
.ToArray();
Assert.DoesNotContain("Rendez-vous", textes);
Assert.DoesNotContain("Liés à une intervention", textes);
Assert.DoesNotContain("Autonomes", textes);
// 3. Le reste de la page est intact : bandeau de la journée et
// sélecteur de mode.
Assert.Contains("Votre journée", textes);
Assert.Contains("Jour", textes);
Assert.Contains("Semaine", textes);
Assert.Contains("Calendrier", textes);
fenetre.Close();
return true;
},
CancellationToken.None).GetAwaiter().GetResult();
}
}