83 lines
2.6 KiB
C#
83 lines
2.6 KiB
C#
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);
|
|
}
|
|
}
|