1e21e33ade
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
128 lines
3.0 KiB
C#
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!));
|
|
}
|
|
}
|