Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
using Omika.App.Local.Abstractions;
|
||||
using Omika.App.Local.Models;
|
||||
using Omika.App.Navigation;
|
||||
using Omika.App.ViewModels;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Tests du ViewModel Détail Équipe : liste des membres, actions rapides
|
||||
/// téléphone / email via des fakes plateforme et remontée du résultat false
|
||||
/// (aucune application de messagerie disponible) à l'utilisateur.
|
||||
/// </summary>
|
||||
public class EquipeDetailViewModelTests
|
||||
{
|
||||
private sealed class FakePhoneLauncher : IPhoneLauncher
|
||||
{
|
||||
public Task<bool> DialAsync(string phoneNumber) => Task.FromResult(true);
|
||||
}
|
||||
|
||||
private sealed class FakeEmailLauncher : IEmailLauncher
|
||||
{
|
||||
public int ComposeCalls { get; private set; }
|
||||
public string? LastEmail { get; private set; }
|
||||
public bool ComposeResult { get; set; } = true;
|
||||
|
||||
public Task<bool> ComposeAsync(string email)
|
||||
{
|
||||
ComposeCalls++;
|
||||
LastEmail = email;
|
||||
return Task.FromResult(ComposeResult);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly FakePhoneLauncher _phoneLauncher = new();
|
||||
private readonly FakeEmailLauncher _emailLauncher = new();
|
||||
private readonly EquipeDetailViewModel _viewModel;
|
||||
|
||||
public EquipeDetailViewModelTests()
|
||||
{
|
||||
_viewModel = new EquipeDetailViewModel(new NavigationService(), _phoneLauncher, _emailLauncher);
|
||||
}
|
||||
|
||||
private static CollaborateurListItem Collaborateur(string? email = null)
|
||||
=> new()
|
||||
{
|
||||
CollaborateurGuid = Guid.NewGuid(),
|
||||
DisplayName = "Jean Dupont",
|
||||
Email = email
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public async Task EmailCollaborateur_LauncherRetourneTrue_AucunMessage()
|
||||
{
|
||||
_emailLauncher.ComposeResult = true;
|
||||
|
||||
await _viewModel.EmailCollaborateurCommand.ExecuteAsync(Collaborateur("jean@omika.fr"));
|
||||
|
||||
Assert.Equal(1, _emailLauncher.ComposeCalls);
|
||||
Assert.Equal("jean@omika.fr", _emailLauncher.LastEmail);
|
||||
Assert.Null(_viewModel.ErrorMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EmailCollaborateur_LauncherRetourneFalse_MessageErreur()
|
||||
{
|
||||
_emailLauncher.ComposeResult = false;
|
||||
|
||||
await _viewModel.EmailCollaborateurCommand.ExecuteAsync(Collaborateur("jean@omika.fr"));
|
||||
|
||||
Assert.Equal(1, _emailLauncher.ComposeCalls);
|
||||
Assert.Equal("Aucune application de messagerie disponible.", _viewModel.ErrorMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EmailCollaborateur_SansEmail_NeLancePas()
|
||||
{
|
||||
await _viewModel.EmailCollaborateurCommand.ExecuteAsync(Collaborateur(null));
|
||||
|
||||
Assert.Equal(0, _emailLauncher.ComposeCalls);
|
||||
Assert.Null(_viewModel.ErrorMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user