public void Test_that_for_no_matched_type_null_value_type_merging_strategy_is_returned() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider.AddTypeValueTypesMergingStrategyRule(t => t.Name == "FictionalTipe", ValueTypeMergingStrategy.UpdateIfDirty); // Act var strategy = metamodelProvider.TryGetValueTypeMergingStrategy(typeof(TestType)); // Assert Assert.AreEqual(ValueTypeMergingStrategy.None, strategy); }
public void Test_that_for_no_matched_type_null_serializer_is_returned() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider .AddTypeSerializerRule( t => t.Name == "FictionalTipe", t => new ValueSerializerMock()); // Act var serializer = metamodelProvider.TryGetTypeSerializer(typeof(TestType)); // Assert Assert.IsNull(serializer); }
public void Test_that_for_no_matched_property_null_serializer_is_returned() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider .AddPropertySerializerRule( p => p.Name == "FictionalProperty", p => new ValueSerializerMock()); // Act var serializer = metamodelProvider.TryGetPropertySerializer(typeof(TestType).GetProperty(nameof(TestType.Property))); // Assert Assert.IsNull(serializer); }
public void Test_that_type_value_type_merging_strategy_rules_applied_in_the_same_order_as_they_was_registered2() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider .AddTypeValueTypesMergingStrategyRule(t => t.Name == "AnotherTestType", ValueTypeMergingStrategy.UpdateAlways) .AddTypeValueTypesMergingStrategyRule(t => t.Name.EndsWith("TestType"), ValueTypeMergingStrategy.UpdateIfDirty); // Act var testTypeStrategy = metamodelProvider.TryGetValueTypeMergingStrategy(typeof(TestType)); var anotherTestTypeStrategy = metamodelProvider.TryGetValueTypeMergingStrategy(typeof(AnotherTestType)); // Assert Assert.AreEqual(ValueTypeMergingStrategy.UpdateIfDirty, testTypeStrategy); Assert.AreEqual(ValueTypeMergingStrategy.UpdateAlways, anotherTestTypeStrategy); }
public void Test_that_type_serializer_rules_applied_in_the_same_order_as_they_was_registered1() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider .AddTypeSerializerRule( t => t.Name.EndsWith("TestType"), t => new ValueSerializerMock()) .AddTypeSerializerRule( t => t.Name == "AnotherTestType", t => new AnotherValueSerializerMock()); // Act var testTypeSerializer = metamodelProvider.TryGetTypeSerializer(typeof(TestType)); var anotherTestTypeSerializer = metamodelProvider.TryGetTypeSerializer(typeof(AnotherTestType)); // Assert Assert.IsNotNull(testTypeSerializer); Assert.IsNotNull(anotherTestTypeSerializer); Assert.IsInstanceOfType(testTypeSerializer, typeof(ValueSerializerMock)); Assert.IsInstanceOfType(anotherTestTypeSerializer, typeof(ValueSerializerMock)); }
public void Test_that_property_rules_applied_in_the_same_order_as_they_was_registered2() { // Arrange var provider = new ConventionBasedMetamodelProvider(); IMetamodelProvider metamodelProvider = provider; provider .AddPropertySerializerRule( p => p.PropertyType == typeof(string), p => new AnotherValueSerializerMock()) .AddPropertySerializerRule( p => p.Name == "Property", p => new ValueSerializerMock()); // Act var testTypeSerializer = metamodelProvider.TryGetPropertySerializer(typeof(TestType).GetProperty(nameof(TestType.Property))); var anotherTestTypeSerializer = metamodelProvider.TryGetPropertySerializer(typeof(AnotherTestType).GetProperty(nameof(AnotherTestType.Property))); // Assert Assert.IsNotNull(testTypeSerializer); Assert.IsNotNull(anotherTestTypeSerializer); Assert.IsInstanceOfType(testTypeSerializer, typeof(ValueSerializerMock)); Assert.IsInstanceOfType(anotherTestTypeSerializer, typeof(AnotherValueSerializerMock)); }
public IServiceProvider ConfigureServices(IServiceCollection services) { Mapper.Initialize(x => x.AddProfile(typeof(AutoMapperProfile))); services.AddSingleton(Mapper.Instance); var conventionProvider = new ConventionBasedMetamodelProvider() .AddTypeValueTypesMergingStrategyRule( t => true, ValueTypeMergingStrategy.Forbid); var provider = new CompositeMetamodelProvider() .AddProvider(new AnnotationsBasedMetamodelProvider()) .AddProvider(conventionProvider); EntityMetamodel.Configure(provider); return(services.BuildServiceProvider <AppSettings>(options => { options.SwaggerOptions = _swaggerOptions; options.Logs = logs => { logs.AzureTableName = "KycSpiderLog"; logs.AzureTableConnectionStringResolver = settings => settings.KycSpiderService.Db.LogsConnection.ConnectionString; // TODO: You could add extended logging configuration here: /* * logs.Extended = extendedLogs => * { * // For example, you could add additional slack channel like this: * extendedLogs.AddAdditionalSlackChannel("KycSpider", channelOptions => * { * channelOptions.MinLogLevel = LogLevel.Information; * }); * }; */ }; // TODO: Extend the service configuration /* * options.Extend = (sc, settings) => * { * sc * .AddOptions() * .AddAuthentication(MyAuthOptions.AuthenticationScheme) * .AddScheme<MyAuthOptions, KeyAuthHandler>(MyAuthOptions.AuthenticationScheme, null); * }; */ // TODO: You could add extended Swagger configuration here: /* * options.Swagger = swagger => * { * swagger.IgnoreObsoleteActions(); * }; */ })); }