public void OnPropertyNullableChanged_calls_apply_on_conventions_in_order() { var conventions = new ConventionSet(); var convention1 = new PropertyNullableConvention(false); var convention2 = new PropertyNullableConvention(true); var convention3 = new PropertyNullableConvention(false); conventions.PropertyNullableChangedConventions.Add(convention1); conventions.PropertyNullableChangedConventions.Add(convention2); conventions.PropertyNullableChangedConventions.Add(convention3); var builder = new ModelBuilder(conventions); builder.Entity <Order>().Property(e => e.Name).IsRequired(); Assert.Equal(new bool?[] { false }, convention1.Calls); Assert.Equal(new bool?[] { false }, convention2.Calls); Assert.Empty(convention3.Calls); builder.Entity <Order>().Property(e => e.Name).IsRequired(false); Assert.Equal(new bool?[] { false, true }, convention1.Calls); Assert.Equal(new bool?[] { false, true }, convention2.Calls); Assert.Empty(convention3.Calls); builder.Entity <Order>().Property(e => e.Name).IsRequired(false); Assert.Equal(new bool?[] { false, true }, convention1.Calls); Assert.Equal(new bool?[] { false, true }, convention2.Calls); Assert.Empty(convention3.Calls); builder.Entity <Order>().Property(e => e.Name).IsRequired(); Assert.Equal(new bool?[] { false, true, false }, convention1.Calls); Assert.Equal(new bool?[] { false, true, false }, convention2.Calls); Assert.Empty(convention3.Calls); }
public void OnPropertyNullableChanged_calls_apply_on_conventions_in_order(bool useBuilder) { var conventions = new ConventionSet(); var convention1 = new PropertyNullableConvention(false); var convention2 = new PropertyNullableConvention(true); var convention3 = new PropertyNullableConvention(false); conventions.PropertyNullableChangedConventions.Add(convention1); conventions.PropertyNullableChangedConventions.Add(convention2); conventions.PropertyNullableChangedConventions.Add(convention3); var builder = new ModelBuilder(conventions); var propertyBuilder = builder.Entity<Order>().Property(e => e.Name); if (useBuilder) { propertyBuilder.IsRequired(); } else { propertyBuilder.Metadata.IsNullable = false; } Assert.Equal(new bool?[] { false }, convention1.Calls); Assert.Equal(new bool?[] { false }, convention2.Calls); Assert.Empty(convention3.Calls); propertyBuilder = builder.Entity<Order>().Property(e => e.Name); if (useBuilder) { propertyBuilder.IsRequired(false); } else { propertyBuilder.Metadata.IsNullable = true; } Assert.Equal(new bool?[] { false, true }, convention1.Calls); Assert.Equal(new bool?[] { false, true }, convention2.Calls); Assert.Empty(convention3.Calls); propertyBuilder = builder.Entity<Order>().Property(e => e.Name); if (useBuilder) { propertyBuilder.IsRequired(false); } else { propertyBuilder.Metadata.IsNullable = true; } Assert.Equal(new bool?[] { false, true }, convention1.Calls); Assert.Equal(new bool?[] { false, true }, convention2.Calls); Assert.Empty(convention3.Calls); propertyBuilder = builder.Entity<Order>().Property(e => e.Name); if (useBuilder) { propertyBuilder.IsRequired(); } else { propertyBuilder.Metadata.IsNullable = false; } Assert.Equal(new bool?[] { false, true, false }, convention1.Calls); Assert.Equal(new bool?[] { false, true, false }, convention2.Calls); Assert.Empty(convention3.Calls); }