コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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();
                 * };
                 */
            }));
        }