Description
I'm trying to do something very simple. I want to validate that the Sources ObservableCollection is not empty.
var sourceNotEmpty = Sources
.ToObservableChangeSet(x => x.Path)
.ToCollection()
.Select(x => x.Any());
this.ValidationRule(x => x.Sources,
sourceNotEmpty,
"You must select source files or folders to encode");
Testing GetErrors works except for this test. It fails because the ValidationRule hasn't yet been evaluated. If I add an item and then remove it, then it works.
[Fact]
public void GetErrors_SourceEmpty_Error()
{
var errors = Model.GetErrors(nameof(Model.Sources));
Assert.Single(errors); // errors is empty
}
Then, how do I get IsValid? Before doing some work in the ViewModel, I first need to check "IsValid" but haven't yet found the way to get the current value. LastAsync
won't work if it hasn't yet been evaluated.
[Fact]
public void IsValid_MissingData_ReturnsFalse()
{
bool? result = null;
Model.IsValid().Do(x => result = x);
Assert.False(result);
}
These 2 things are extremely simple but there's probably something I'm missing with the whole paradigm?
Adding to this, on the UI, I probably don't want to display all the "field missing" errors right away, but only when he tries to click Submit or re-empties a field after typing in it.