Bari.Core.Test.Loader.YamlLoaderTest.ProductPostprocessorsLoadedWithParameters C# (CSharp) Method

ProductPostprocessorsLoadedWithParameters() private method

private ProductPostprocessorsLoadedWithParameters ( ) : void
return void
        public void ProductPostprocessorsLoadedWithParameters()
        {
            const string yaml = @"---
            suite: Test suite

            products:
            - name: Module
              postprocessors:
            - name: pp1
              type: pptype1
              param: v1
            - name: pp2
              type: pptype2
              param: v2
            ";

            var paramLoader = new Mock<IYamlProjectParametersLoader>();
            kernel.Bind<IYamlProjectParametersLoader>().ToConstant(paramLoader.Object);

            var param1 = new Mock<IProjectParameters>();
            var param2 = new Mock<IProjectParameters>();

            paramLoader.Setup(l => l.Supports("pptype1")).Returns(true);
            paramLoader.Setup(l => l.Supports("pptype2")).Returns(true);

            paramLoader.Setup(l => l.Load(It.IsAny<Suite>(), "pptype1", It.IsAny<YamlNode>(), It.IsAny<YamlParser>()))
                .Returns(param1.Object);
            paramLoader.Setup(l => l.Load(It.IsAny<Suite>(), "pptype2", It.IsAny<YamlNode>(), It.IsAny<YamlParser>()))
                .Returns(param2.Object);

            var loader = kernel.Get<InMemoryYamlModelLoader>();
            loader.Should().NotBeNull();

            var suite = loader.Load(yaml);

            suite.Should().NotBeNull();
            suite.GetProduct("Module").PostProcessors.Should().HaveCount(2);
            suite.GetProduct("Module").PostProcessors.Should().OnlyContain(
                p => (p.Name == "pp1" && p.PostProcessorId == new PostProcessorId("pptype1")) ||
                     (p.Name == "pp2" && p.PostProcessorId == new PostProcessorId("pptype2")));

            paramLoader.Verify(l => l.Supports("pptype1"), Times.AtLeastOnce);
            paramLoader.Verify(l => l.Supports("pptype2"), Times.AtLeastOnce);

            suite.GetProduct("Module").GetPostProcessor("pp1").Parameters.Should().Be(param1.Object);
            suite.GetProduct("Module").GetPostProcessor("pp2").Parameters.Should().Be(param2.Object);
        }