Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
using System.Net.Http;
|
||||
using Omika.App.Local.Abstractions;
|
||||
using Omika.App.Local.Services;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Tests du classement des erreurs : une indisponibilité du serveur — coupure réseau
|
||||
/// OU inscription incomplète (aucune URL d'API) — est un état dégradé journalisé en
|
||||
/// Warning/P2, jamais un incident ; une erreur métier conserve son message et sa
|
||||
/// gravité.
|
||||
///
|
||||
/// Origine : ticket de production du 09/10 (AgendaViewModel), où l'absence d'URL
|
||||
/// d'API remontait en Error/P1 avec un message technique inactionnable.
|
||||
/// </summary>
|
||||
public class ReseauMessagesTests
|
||||
{
|
||||
[Fact]
|
||||
public void EstErreurReseau_HttpRequestException_Vrai()
|
||||
=> Assert.True(ReseauMessages.EstErreurReseau(new HttpRequestException("Connection failure")));
|
||||
|
||||
[Fact]
|
||||
public void EstErreurReseau_ErreurMetier_Faux()
|
||||
=> Assert.False(ReseauMessages.EstErreurReseau(new InvalidOperationException("panne métier")));
|
||||
|
||||
/// <summary>
|
||||
/// Une inscription incomplète n'est PAS une erreur réseau : l'appareil peut être
|
||||
/// parfaitement en ligne. La confondre ferait afficher « hors ligne » et masquerait
|
||||
/// l'action attendue (rescan du QR).
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void EstInscriptionIncomplete_ExceptionDediee_Vrai()
|
||||
{
|
||||
var ex = new MobileEnrollmentRequiredException();
|
||||
|
||||
Assert.True(ReseauMessages.EstInscriptionIncomplete(ex));
|
||||
Assert.False(ReseauMessages.EstErreurReseau(ex));
|
||||
// L'état reste une InvalidOperationException : les traitements existants qui
|
||||
// le considèrent comme non terminal (session jamais purgée) continuent de
|
||||
// fonctionner.
|
||||
Assert.IsAssignableFrom<InvalidOperationException>(ex);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EstInscriptionIncomplete_InvalidOperationExceptionGenerique_Faux()
|
||||
=> Assert.False(ReseauMessages.EstInscriptionIncomplete(new InvalidOperationException("panne métier")));
|
||||
|
||||
/// <summary>Le classement utilisé AVANT journalisation couvre les deux états dégradés.</summary>
|
||||
[Fact]
|
||||
public void EstIndisponibiliteServeur_CouvreReseauEtInscription()
|
||||
{
|
||||
Assert.True(ReseauMessages.EstIndisponibiliteServeur(new HttpRequestException("Connection failure")));
|
||||
Assert.True(ReseauMessages.EstIndisponibiliteServeur(new MobileEnrollmentRequiredException()));
|
||||
Assert.False(ReseauMessages.EstIndisponibiliteServeur(new InvalidOperationException("panne métier")));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Traduire_EchecReseau_MessageStable()
|
||||
=> Assert.Equal(
|
||||
"Hors ligne — impossible de contacter le serveur.",
|
||||
ReseauMessages.Traduire(new HttpRequestException("Connection failure")));
|
||||
|
||||
/// <summary>
|
||||
/// Le message technique « Aucune URL d'API Omika configurée… » n'indiquait pas le
|
||||
/// geste attendu : l'utilisateur reçoit désormais l'action à faire.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Traduire_InscriptionIncomplete_IndiqueLAction()
|
||||
=> Assert.Equal(
|
||||
"Inscription incomplète — rescannez le QR code pour reconnecter l'application.",
|
||||
ReseauMessages.Traduire(new MobileEnrollmentRequiredException()));
|
||||
|
||||
[Fact]
|
||||
public void Traduire_ErreurMetier_ConserveLeMessage()
|
||||
=> Assert.Equal("panne métier", ReseauMessages.Traduire(new InvalidOperationException("panne métier")));
|
||||
}
|
||||
Reference in New Issue
Block a user