public void CallsTransformProviders()
        {
            var provider1 = new TestTransformProvider();
            var provider2 = new TestTransformProvider();
            var provider3 = new TestTransformProvider();
            var builder   = new TransformBuilder(new ServiceCollection().BuildServiceProvider(),
                                                 Array.Empty <ITransformFactory>(), new[] { provider1, provider2, provider3 });

            var route  = new RouteConfig();
            var errors = builder.ValidateRoute(route);

            Assert.Empty(errors);
            Assert.Equal(1, provider1.ValidateRouteCalls);
            Assert.Equal(1, provider2.ValidateRouteCalls);
            Assert.Equal(1, provider3.ValidateRouteCalls);

            var cluster = new ClusterConfig();

            errors = builder.ValidateCluster(cluster);
            Assert.Empty(errors);
            Assert.Equal(1, provider1.ValidateClusterCalls);
            Assert.Equal(1, provider2.ValidateClusterCalls);
            Assert.Equal(1, provider3.ValidateClusterCalls);

            var transforms = builder.BuildInternal(route, cluster);

            Assert.Equal(1, provider1.ApplyCalls);
            Assert.Equal(1, provider2.ApplyCalls);
            Assert.Equal(1, provider3.ApplyCalls);

            Assert.Equal(3, transforms.ResponseTrailerTransforms.Count);
        }
Пример #2
0
        public void CreateOutputElement_CreatesIndentAttributeCorrectly(bool formatXml)
        {
            var builder = new TransformBuilder();
            var element = builder.CreateOutput(OutputType.Xml, formatXml);

            Assert.Equal(formatXml, element.Attributes().Any(a => a.Name == "indent"));
        }
        public void CallsTransformFactories()
        {
            var factory1 = new TestTransformFactory("1");
            var factory2 = new TestTransformFactory("2");
            var factory3 = new TestTransformFactory("3");
            var builder  = new TransformBuilder(new ServiceCollection().BuildServiceProvider(),
                                                new[] { factory1, factory2, factory3 }, Array.Empty <ITransformProvider>());

            var route = new RouteConfig().WithTransform(transform =>
            {
                transform["2"] = "B";
            });
            var errors = builder.ValidateRoute(route);

            Assert.Empty(errors);
            Assert.Equal(1, factory1.ValidationCalls);
            Assert.Equal(1, factory2.ValidationCalls);
            Assert.Equal(0, factory3.ValidationCalls);

            var transforms = builder.BuildInternal(route, new ClusterConfig());

            Assert.Equal(1, factory1.BuildCalls);
            Assert.Equal(1, factory2.BuildCalls);
            Assert.Equal(0, factory3.BuildCalls);

            Assert.Single(transforms.ResponseTrailerTransforms);
        }
Пример #4
0
        public void Build_DefaultConfiguration_DocumentHasCorrectRootNode()
        {
            var builder  = new TransformBuilder();
            var document = builder.Build();

            Assert.NotNull(document.Root);
            Assert.Equal("stylesheet", document.Root.Name.LocalName);
        }
Пример #5
0
        public void Append_ReturnedBuilderIsSameObject()
        {
            var builder     = new TransformBuilder();
            var testElement = new XElement("TestElement");

            var returnedBuilder = builder.Append(testElement);

            Assert.Same(builder, returnedBuilder);
        }
Пример #6
0
        public void CreateOutputElement_CreatesMethodAttributeCorrectly(OutputType outputType, string expectedValue)
        {
            var builder         = new TransformBuilder();
            var element         = builder.CreateOutput(outputType, true);
            var methodAttribute = element.Attribute("method");

            Assert.NotNull(methodAttribute);
            Assert.Equal(expectedValue, methodAttribute.Value);
        }
Пример #7
0
        public void Append_NullValue_IsIgnored()
        {
            var builder = new TransformBuilder();

            builder.Append(null);

            var document = builder.Build();

            Assert.NotNull(document.Root);
        }
Пример #8
0
        public void Build_DefaultConfiguration_DocumentIsValidXslt()
        {
            var builder   = new TransformBuilder();
            var document  = builder.Build();
            var transform = new XslCompiledTransform();

            using (var reader = document.CreateReader())
            {
                transform.Load(reader);
            }
        }
Пример #9
0
        public void Append_SingleValue_AddsObjectToRoot()
        {
            var builder     = new TransformBuilder();
            var testElement = new XElement("TestElement");

            builder.Append(testElement);

            var document = builder.Build();
            var rootNode = document.Root;

            Assert.NotNull(rootNode);
            Assert.Contains(rootNode.Elements(), e => e == testElement);
        }
Пример #10
0
        /// <summary>
        /// Transform a record based on predefined rules (in appsettings.json)
        /// </summary>
        /// <param name="csvItem">a record in CSV file</param>
        /// <returns>transformed record</returns>
        public ExpandoObject TransformRecord(dynamic expando)
        {
            if (Options != null)
            {
                var builder = new TransformBuilder(Options, expando);
                return(builder
                       .RemoveColumns()
                       .NewSumColumns()
                       .GetInstance());
            }

            return(expando);
        }
Пример #11
0
        public void Initialize_DefaultConfiguration_RootHasCorrectSubNodes()
        {
            var builder = new TransformBuilder();

            builder.Initialize();
            var document = builder.Build();
            var rootNode = document.Root;

            Assert.NotNull(rootNode);
            Assert.Equal(3, rootNode.Elements().Count());
            Assert.Contains(rootNode.Elements(), e => e.Name.LocalName == "strip-space");
            Assert.Contains(rootNode.Elements(), e => e.Name.LocalName == "output");
            Assert.Contains(rootNode.Elements(), e => e.Name.LocalName == "template");
        }
Пример #12
0
        public void Build_ConfigIgnoreWhitespaceIsFalse_RemovesStripSpaceCorrectly()
        {
            var config = new TransformBuilderConfiguration
            {
                IgnoreWhitespace = false
            };
            var builder  = new TransformBuilder(config);
            var document = builder.Build();

            builder.Initialize();
            var rootNode = document.Root;

            Assert.NotNull(rootNode);
            Assert.DoesNotContain(rootNode.Elements(), e => e.Name.LocalName == "strip-space");
        }
Пример #13
0
        public void Append_MultipleValues_AddsObjectsToRoot()
        {
            var builder       = new TransformBuilder();
            var testElement   = new XElement("TestElement");
            var testAttribute = new XAttribute("TestAttribute", "TestAttributeValue");

            builder.Append(testElement, testAttribute);

            var document = builder.Build();
            var rootNode = document.Root;

            Assert.NotNull(rootNode);
            Assert.Contains(rootNode.Elements(), e => e.Name.LocalName == "TestElement");
            Assert.Contains(rootNode.Attributes(),
                            e => e.Name.LocalName == "TestAttribute" && e.Value == "TestAttributeValue");
        }
Пример #14
0
 public BranchBuilder(TransformBuilder transformBuilder, TflBranch branch)
 {
     _transformBuilder = transformBuilder;
     _branch           = branch;
 }
Пример #15
0
 public BranchBuilder(TransformBuilder transformBuilder, TflBranch branch) {
     _transformBuilder = transformBuilder;
     _branch = branch;
 }
Пример #16
0
 static HttpTransformer()
 {
     Default = TransformBuilder.CreateTransformer(new TransformBuilderContext());
 }