feat(configmanager): add DataAccessFormViewModel
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
using JdeScoping.ConfigManager.Models;
|
||||
|
||||
namespace JdeScoping.ConfigManager.ViewModels.Forms;
|
||||
|
||||
/// <summary>
|
||||
/// ViewModel for editing DataAccess configuration section.
|
||||
/// </summary>
|
||||
public class DataAccessFormViewModel : ViewModelBase
|
||||
{
|
||||
private readonly DataAccessSection _model;
|
||||
private readonly Action _onChanged;
|
||||
|
||||
public DataAccessFormViewModel(DataAccessSection model, Action onChanged)
|
||||
{
|
||||
_model = model ?? throw new ArgumentNullException(nameof(model));
|
||||
_onChanged = onChanged ?? throw new ArgumentNullException(nameof(onChanged));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the default query timeout in seconds.
|
||||
/// </summary>
|
||||
public int DefaultTimeoutSeconds
|
||||
{
|
||||
get => _model.DefaultTimeoutSeconds;
|
||||
set
|
||||
{
|
||||
if (_model.DefaultTimeoutSeconds != value)
|
||||
{
|
||||
_model.DefaultTimeoutSeconds = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the lot usage query timeout in seconds.
|
||||
/// </summary>
|
||||
public int LotUsageTimeoutSeconds
|
||||
{
|
||||
get => _model.LotUsageTimeoutSeconds;
|
||||
set
|
||||
{
|
||||
if (_model.LotUsageTimeoutSeconds != value)
|
||||
{
|
||||
_model.LotUsageTimeoutSeconds = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the MIS data query timeout in seconds.
|
||||
/// </summary>
|
||||
public int MisDataTimeoutSeconds
|
||||
{
|
||||
get => _model.MisDataTimeoutSeconds;
|
||||
set
|
||||
{
|
||||
if (_model.MisDataTimeoutSeconds != value)
|
||||
{
|
||||
_model.MisDataTimeoutSeconds = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the production schema name.
|
||||
/// </summary>
|
||||
public string ProductionSchema
|
||||
{
|
||||
get => _model.ProductionSchema;
|
||||
set
|
||||
{
|
||||
if (_model.ProductionSchema != value)
|
||||
{
|
||||
_model.ProductionSchema = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the archive schema name.
|
||||
/// </summary>
|
||||
public string ArchiveSchema
|
||||
{
|
||||
get => _model.ArchiveSchema;
|
||||
set
|
||||
{
|
||||
if (_model.ArchiveSchema != value)
|
||||
{
|
||||
_model.ArchiveSchema = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the stage schema name.
|
||||
/// </summary>
|
||||
public string StageSchema
|
||||
{
|
||||
get => _model.StageSchema;
|
||||
set
|
||||
{
|
||||
if (_model.StageSchema != value)
|
||||
{
|
||||
_model.StageSchema = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether detailed logging is enabled.
|
||||
/// </summary>
|
||||
public bool EnableDetailedLogging
|
||||
{
|
||||
get => _model.EnableDetailedLogging;
|
||||
set
|
||||
{
|
||||
if (_model.EnableDetailedLogging != value)
|
||||
{
|
||||
_model.EnableDetailedLogging = value;
|
||||
OnPropertyChanged();
|
||||
_onChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
using JdeScoping.ConfigManager.Models;
|
||||
using JdeScoping.ConfigManager.ViewModels.Forms;
|
||||
|
||||
namespace JdeScoping.ConfigManager.Tests.ViewModels.Forms;
|
||||
|
||||
public class DataAccessFormViewModelTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_InitializesFromModel()
|
||||
{
|
||||
// Arrange
|
||||
var model = new DataAccessSection
|
||||
{
|
||||
DefaultTimeoutSeconds = 60,
|
||||
ProductionSchema = "dbo",
|
||||
EnableDetailedLogging = true
|
||||
};
|
||||
|
||||
// Act
|
||||
var sut = new DataAccessFormViewModel(model, () => { });
|
||||
|
||||
// Assert
|
||||
sut.DefaultTimeoutSeconds.ShouldBe(60);
|
||||
sut.ProductionSchema.ShouldBe("dbo");
|
||||
sut.EnableDetailedLogging.ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PropertyChange_UpdatesModelAndInvokesOnChanged()
|
||||
{
|
||||
// Arrange
|
||||
var model = new DataAccessSection();
|
||||
var changedInvoked = false;
|
||||
var sut = new DataAccessFormViewModel(model, () => changedInvoked = true);
|
||||
|
||||
// Act
|
||||
sut.ArchiveSchema = "hist";
|
||||
|
||||
// Assert
|
||||
model.ArchiveSchema.ShouldBe("hist");
|
||||
changedInvoked.ShouldBeTrue();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user