using JdeScoping.ConfigManager.Models; using JdeScoping.ConfigManager.ViewModels.Forms; namespace JdeScoping.ConfigManager.Tests.ViewModels.Forms; public class DataSyncFormViewModelTests { [Fact] public void Constructor_InitializesFromModel() { // Arrange var model = new DataSyncSection { Enabled = true, MaxDegreeOfParallelism = 8, BatchSize = 25000 }; // Act var sut = new DataSyncFormViewModel(model, () => { }); // Assert sut.Enabled.ShouldBeTrue(); sut.MaxDegreeOfParallelism.ShouldBe(8); sut.BatchSize.ShouldBe(25000); } [Fact] public void PropertyChange_UpdatesModel() { // Arrange var model = new DataSyncSection { MaxDegreeOfParallelism = 4 }; var sut = new DataSyncFormViewModel(model, () => { }); // Act sut.MaxDegreeOfParallelism = 16; // Assert model.MaxDegreeOfParallelism.ShouldBe(16); } [Fact] public void PropertyChange_InvokesOnChanged() { // Arrange var model = new DataSyncSection(); var changedInvoked = false; var sut = new DataSyncFormViewModel(model, () => changedInvoked = true); // Act sut.BatchSize = 10000; // Assert changedInvoked.ShouldBeTrue(); } [Fact] public void PropertyChange_RaisesPropertyChanged() { // Arrange var model = new DataSyncSection(); var sut = new DataSyncFormViewModel(model, () => { }); var propertyChangedRaised = false; sut.PropertyChanged += (s, e) => { if (e.PropertyName == nameof(DataSyncFormViewModel.LookbackMultiplier)) propertyChangedRaised = true; }; // Act sut.LookbackMultiplier = 2.5; // Assert propertyChangedRaised.ShouldBeTrue(); } }