Skip to content

Commit

Permalink
fix: don't generate required rules for properties that are not sent…
Browse files Browse the repository at this point in the history
… to the server
  • Loading branch information
ascott18 committed Apr 29, 2024
1 parent a87a438 commit 081bf7f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ public class ComplexModel
[DefaultOrderBy(FieldOrder = 2)]
public int ComplexModelId { get; set; }

#nullable enable
[InverseProperty(nameof(Test.ComplexModel))]
[Search]
public ICollection<Test> Tests { get; set; }
public ICollection<Test> Tests { get; set; } = new List<Test>();
#nullable restore

/// <summary>
/// Test case for foreign keys without a reference navigation prop.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,5 +257,21 @@ public void IsClientSerializable_IsCorrect(PropertyViewModelData data, bool expe
PropertyViewModel vm = data;
Assert.Equal(expected, vm.IsClientSerializable);
}

[Theory]
[PropertyViewModelData<ComplexModel>(nameof(ComplexModel.ReferenceNavigation), false)]
[PropertyViewModelData<ComplexModel>(nameof(ComplexModel.Tests), false)]
[PropertyViewModelData<ComplexModel>(nameof(ComplexModel.ComplexModelId), false)]
#if NET7_0_OR_GREATER
[PropertyViewModelData<RequiredAndInitModel>(nameof(RequiredAndInitModel.RequiredRef), true)]
[PropertyViewModelData<RequiredAndInitModel>(nameof(RequiredAndInitModel.RequiredValue), true)]
[PropertyViewModelData<RequiredAndInitModel>(nameof(RequiredAndInitModel.RequiredInitRef), true)]
[PropertyViewModelData<RequiredAndInitModel>(nameof(RequiredAndInitModel.RequiredInitValue), true)]
#endif
public void IsRequired_IsCorrect(PropertyViewModelData data, bool expected)
{
PropertyViewModel vm = data;
Assert.Equal(expected, vm.IsRequired);
}
}
}
7 changes: 7 additions & 0 deletions src/IntelliTect.Coalesce/TypeDefinition/PropertyViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,13 @@ public override bool IsRequired
return false;
}

if (!IsClientSerializable)
{
// Properties that the client never sends to the server can't be required.
// This avoids creating bogus `required` rules for things like non-nullable navigation properties.
return false;
}

if (HasRequiredKeyword) return true;

if (IsCreateOnly)
Expand Down

0 comments on commit 081bf7f

Please sign in to comment.