1e21e33ade
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
185 lines
4.8 KiB
C#
185 lines
4.8 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using JdeScoping.SecureStoreManager.ViewModels;
|
|
|
|
namespace JdeScoping.SecureStoreManager.Tests.ViewModels;
|
|
|
|
public class ViewModelBaseTests
|
|
{
|
|
/// <summary>
|
|
/// Test implementation of ViewModelBase for testing purposes.
|
|
/// </summary>
|
|
private class TestViewModel : ViewModelBase
|
|
{
|
|
private string _testProperty = string.Empty;
|
|
private int _testIntProperty;
|
|
|
|
public string TestProperty
|
|
{
|
|
get => _testProperty;
|
|
set => SetProperty(ref _testProperty, value);
|
|
}
|
|
|
|
public int TestIntProperty
|
|
{
|
|
get => _testIntProperty;
|
|
set => SetProperty(ref _testIntProperty, value);
|
|
}
|
|
|
|
public void RaisePropertyChangedForTest(string propertyName)
|
|
{
|
|
OnPropertyChanged(propertyName);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WhenValueUnchanged_ReturnsFalse()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
sut.TestProperty = "initialValue";
|
|
|
|
// Act
|
|
sut.TestProperty = "initialValue"; // Same value
|
|
|
|
// Assert - SetProperty should have returned false, but we can verify by checking no event was raised
|
|
// We test this indirectly through the property changed event not firing
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WhenValueUnchanged_DoesNotRaisePropertyChanged()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
sut.TestProperty = "initialValue";
|
|
var eventRaised = false;
|
|
sut.PropertyChanged += (s, e) => eventRaised = true;
|
|
|
|
// Act
|
|
sut.TestProperty = "initialValue"; // Same value
|
|
|
|
// Assert
|
|
eventRaised.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WhenValueChanged_ReturnsTrue()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
|
|
// Act
|
|
sut.TestProperty = "newValue";
|
|
|
|
// Assert - SetProperty returned true (verified by property change being made)
|
|
sut.TestProperty.ShouldBe("newValue");
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WhenValueChanged_RaisesPropertyChanged()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
var eventRaised = false;
|
|
sut.PropertyChanged += (s, e) => eventRaised = true;
|
|
|
|
// Act
|
|
sut.TestProperty = "newValue";
|
|
|
|
// Assert
|
|
eventRaised.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_RaisesEventWithCorrectPropertyName()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
string? raisedPropertyName = null;
|
|
sut.PropertyChanged += (s, e) => raisedPropertyName = e.PropertyName;
|
|
|
|
// Act
|
|
sut.TestProperty = "newValue";
|
|
|
|
// Assert
|
|
raisedPropertyName.ShouldBe(nameof(TestViewModel.TestProperty));
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_RaisesEventWithSenderAsThis()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
object? eventSender = null;
|
|
sut.PropertyChanged += (s, e) => eventSender = s;
|
|
|
|
// Act
|
|
sut.TestProperty = "newValue";
|
|
|
|
// Assert
|
|
eventSender.ShouldBe(sut);
|
|
}
|
|
|
|
[Fact]
|
|
public void OnPropertyChanged_RaisesPropertyChangedEvent()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
var eventRaised = false;
|
|
sut.PropertyChanged += (s, e) => eventRaised = true;
|
|
|
|
// Act
|
|
sut.RaisePropertyChangedForTest("SomeProperty");
|
|
|
|
// Assert
|
|
eventRaised.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void OnPropertyChanged_RaisesEventWithCorrectPropertyName()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
string? raisedPropertyName = null;
|
|
sut.PropertyChanged += (s, e) => raisedPropertyName = e.PropertyName;
|
|
|
|
// Act
|
|
sut.RaisePropertyChangedForTest("CustomProperty");
|
|
|
|
// Assert
|
|
raisedPropertyName.ShouldBe("CustomProperty");
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WithValueType_WorksCorrectly()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
var eventRaised = false;
|
|
sut.PropertyChanged += (s, e) => eventRaised = true;
|
|
|
|
// Act
|
|
sut.TestIntProperty = 42;
|
|
|
|
// Assert
|
|
sut.TestIntProperty.ShouldBe(42);
|
|
eventRaised.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void SetProperty_WithSameValueType_DoesNotRaiseEvent()
|
|
{
|
|
// Arrange
|
|
var sut = new TestViewModel();
|
|
sut.TestIntProperty = 42;
|
|
var eventRaised = false;
|
|
sut.PropertyChanged += (s, e) => eventRaised = true;
|
|
|
|
// Act
|
|
sut.TestIntProperty = 42; // Same value
|
|
|
|
// Assert
|
|
eventRaised.ShouldBeFalse();
|
|
}
|
|
}
|