Files
jdescopingtool/Deprecated/JdeScoping.SecureStoreManager.Tests/ViewModels/RelayCommandTests.cs
T
Joseph Doherty 1e21e33ade chore: deprecate standalone SecureStoreManager utility
Move SecureStoreManager project and tests to Deprecated folder and remove
from solution. SecureStore functionality is now integrated into ConfigManager.
2026-01-27 07:26:40 -05:00

128 lines
3.0 KiB
C#

using Shouldly;
using Xunit;
using JdeScoping.SecureStoreManager.ViewModels;
namespace JdeScoping.SecureStoreManager.Tests.ViewModels;
public class RelayCommandTests
{
[Fact]
public void Execute_CallsAction()
{
// Arrange
var wasCalled = false;
var sut = new RelayCommand(() => wasCalled = true);
// Act
sut.Execute(null);
// Assert
wasCalled.ShouldBeTrue();
}
[Fact]
public void Execute_PassesParameterToAction()
{
// Arrange
object? receivedParameter = null;
var sut = new RelayCommand(p => receivedParameter = p);
// Act
sut.Execute("testParam");
// Assert
receivedParameter.ShouldBe("testParam");
}
[Fact]
public void CanExecute_WhenNoPredicate_ReturnsTrue()
{
// Arrange
var sut = new RelayCommand(() => { });
// Act
var result = sut.CanExecute(null);
// Assert
result.ShouldBeTrue();
}
[Fact]
public void CanExecute_WhenPredicateReturnsTrue_ReturnsTrue()
{
// Arrange
var sut = new RelayCommand(() => { }, () => true);
// Act
var result = sut.CanExecute(null);
// Assert
result.ShouldBeTrue();
}
[Fact]
public void CanExecute_WhenPredicateReturnsFalse_ReturnsFalse()
{
// Arrange
var sut = new RelayCommand(() => { }, () => false);
// Act
var result = sut.CanExecute(null);
// Assert
result.ShouldBeFalse();
}
[Fact]
public void CanExecute_WithParameterPredicate_EvaluatesParameter()
{
// Arrange
var sut = new RelayCommand(_ => { }, p => p is string s && s == "valid");
// Act
var validResult = sut.CanExecute("valid");
var invalidResult = sut.CanExecute("invalid");
// Assert
validResult.ShouldBeTrue();
invalidResult.ShouldBeFalse();
}
[Fact]
public void RaiseCanExecuteChanged_FiresCanExecuteChangedEvent()
{
// Arrange
var sut = new RelayCommand(() => { });
var eventFired = false;
sut.CanExecuteChanged += (s, e) => eventFired = true;
// Act
sut.RaiseCanExecuteChanged();
// Assert
eventFired.ShouldBeTrue();
}
[Fact]
public void RaiseCanExecuteChanged_EventSenderIsSut()
{
// Arrange
var sut = new RelayCommand(() => { });
object? eventSender = null;
sut.CanExecuteChanged += (s, e) => eventSender = s;
// Act
sut.RaiseCanExecuteChanged();
// Assert
eventSender.ShouldBe(sut);
}
[Fact]
public void Constructor_WithNullExecute_ThrowsArgumentNullException()
{
// Arrange & Act & Assert
Should.Throw<ArgumentNullException>(() => new RelayCommand((Action<object?>)null!));
}
}