Skip to content

Commit 03a69e9

Browse files
committed
test: add tests
1 parent d559846 commit 03a69e9

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/ByteSync.Client.IntegrationTests/ViewModels/TrustedNetworks/AddTrustedClientViewModel_HeadlessTests.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using FluentAssertions;
1212
using Microsoft.Extensions.Logging;
1313
using Moq;
14+
using Avalonia.Input.Platform;
1415

1516
namespace ByteSync.Client.IntegrationTests.ViewModels.TrustedNetworks;
1617

@@ -428,6 +429,77 @@ public ThrowingClipboardViewModel(PublicKeyCheckData publicKeyCheckData, TrustDa
428429
throw new InvalidOperationException("clipboard-throw");
429430
}
430431
}
432+
433+
private sealed class MockClipboardViewModel : AddTrustedClientViewModel
434+
{
435+
private readonly IClipboard _clipboard;
436+
437+
public MockClipboardViewModel(PublicKeyCheckData publicKeyCheckData, TrustDataParameters trustDataParameters,
438+
IPublicKeysManager publicKeysManager, IApplicationSettingsRepository applicationSettingsManager,
439+
IPublicKeysTruster publicKeysTruster, ILogger<AddTrustedClientViewModel> logger, IClipboard clipboard)
440+
: base(publicKeyCheckData, trustDataParameters, publicKeysManager, applicationSettingsManager, publicKeysTruster, logger, null!)
441+
{
442+
_clipboard = clipboard;
443+
}
444+
445+
protected override IClipboard? GetClipboard() => _clipboard;
446+
}
447+
448+
[Test]
449+
public async Task CopyToClipboard_WhenClipboardAvailable_Should_Set_OKFlags()
450+
{
451+
var check = CreateCheckData();
452+
var trustParams = CreateTrustParams(false, true);
453+
454+
var clipboard = new Mock<IClipboard>();
455+
clipboard.Setup(c => c.SetTextAsync(It.IsAny<string>())).Returns(Task.CompletedTask);
456+
457+
var vm = new MockClipboardViewModel(check, trustParams, _publicKeysManager.Object, _appSettings.Object,
458+
_truster.Object, _logger.Object, clipboard.Object)
459+
{
460+
Container = new FlyoutContainerViewModel { CanCloseCurrentFlyout = false },
461+
SafetyKeyParts = new[] { "alpha", "beta" }
462+
};
463+
464+
await ExecuteOnUiThread(async () =>
465+
{
466+
vm.CopyToClipboardCommand.Execute().Subscribe();
467+
await Task.CompletedTask;
468+
});
469+
PumpUntil(() => vm.IsCopyToClipboardOK || vm.IsClipboardCheckError);
470+
471+
vm.IsCopyToClipboardOK.Should().BeTrue();
472+
vm.IsClipboardCheckError.Should().BeFalse();
473+
clipboard.Verify(c => c.SetTextAsync("alpha beta"), Times.Once);
474+
}
475+
476+
[Test]
477+
public async Task CheckClipboard_WhenClipboardAvailable_Matching_Should_Set_OK()
478+
{
479+
var check = CreateCheckData();
480+
var trustParams = CreateTrustParams(false, true);
481+
482+
var clipboard = new Mock<IClipboard>();
483+
clipboard.Setup(c => c.GetTextAsync()).Returns(Task.FromResult("alpha beta"));
484+
485+
var vm = new MockClipboardViewModel(check, trustParams, _publicKeysManager.Object, _appSettings.Object,
486+
_truster.Object, _logger.Object, clipboard.Object)
487+
{
488+
Container = new FlyoutContainerViewModel { CanCloseCurrentFlyout = false },
489+
SafetyKeyParts = new[] { "alpha", "beta" }
490+
};
491+
492+
await ExecuteOnUiThread(async () =>
493+
{
494+
vm.CheckClipboardCommand.Execute().Subscribe();
495+
await Task.CompletedTask;
496+
});
497+
PumpUntil(() => vm.IsClipboardCheckOK || vm.IsClipboardCheckError);
498+
499+
vm.IsClipboardCheckOK.Should().BeTrue();
500+
vm.IsClipboardCheckError.Should().BeFalse();
501+
clipboard.Verify(c => c.GetTextAsync(), Times.Once);
502+
}
431503
}
432504

433505

0 commit comments

Comments
 (0)