コード例 #1
0
        public void Merge_UsesTheLastInjectChunkOfAPropertyName()
        {
            // Arrange
            var merger          = new InjectChunkMerger("dynamic");
            var chunkTree       = new ChunkTree();
            var inheritedChunks = new Chunk[]
            {
                new LiteralChunk(),
                new InjectChunk("SomeOtherType", "Property"),
                new InjectChunk("DifferentPropertyType", "DifferentProperty"),
                new InjectChunk("SomeType", "Property"),
            };

            // Act
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            Assert.Collection(chunkTree.Chunks,
                              chunk =>
            {
                var injectChunk = Assert.IsType <InjectChunk>(chunk);
                Assert.Equal("SomeType", injectChunk.TypeName);
                Assert.Equal("Property", injectChunk.MemberName);
            },
                              chunk =>
            {
                var injectChunk = Assert.IsType <InjectChunk>(chunk);
                Assert.Equal("DifferentPropertyType", injectChunk.TypeName);
                Assert.Equal("DifferentProperty", injectChunk.MemberName);
            });
        }
コード例 #2
0
        public void Merge_MatchesPropertyNameInCaseSensitiveManner()
        {
            // Arrange
            var merger          = new InjectChunkMerger("dynamic");
            var chunkTree       = new ChunkTree();
            var inheritedChunks = new[]
            {
                new InjectChunk("MyTypeB", "different-property"),
                new InjectChunk("MyType", "myproperty"),
            };

            // Act
            merger.VisitChunk(new InjectChunk("MyType", "MyProperty"));
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            Assert.Equal(2, chunkTree.Chunks.Count);
            var injectChunk = Assert.IsType <InjectChunk>(chunkTree.Chunks[0]);

            Assert.Equal("MyType", injectChunk.TypeName);
            Assert.Equal("myproperty", injectChunk.MemberName);

            injectChunk = Assert.IsType <InjectChunk>(chunkTree.Chunks[1]);
            Assert.Equal("MyTypeB", injectChunk.TypeName);
            Assert.Equal("different-property", injectChunk.MemberName);
        }
コード例 #3
0
        public void Merge_MatchesPropertyNameInCaseSensitiveManner()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();
            var inheritedChunks = new[]
            {
                new InjectChunk("MyTypeB", "different-property"),
                new InjectChunk("MyType", "myproperty"),
            };

            // Act
            merger.VisitChunk(new InjectChunk("MyType", "MyProperty"));
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            Assert.Equal(2, chunkTree.Children.Count);
            var injectChunk = Assert.IsType<InjectChunk>(chunkTree.Children[0]);
            Assert.Equal("MyType", injectChunk.TypeName);
            Assert.Equal("myproperty", injectChunk.MemberName);

            injectChunk = Assert.IsType<InjectChunk>(chunkTree.Children[1]);
            Assert.Equal("MyTypeB", injectChunk.TypeName);
            Assert.Equal("different-property", injectChunk.MemberName);
        }
コード例 #4
0
ファイル: InjectChunkMergerTest.cs プロジェクト: notami18/Mvc
        public void Merge_ThrowsIfThePassedInChunkIsNotAInjectChunk()
        {
            // Arrange
            var expected = "Argument must be an instance of 'Microsoft.AspNet.Mvc.Razor.InjectChunk'.";
            var merger = new InjectChunkMerger("dynamic");

            // Act and Assert
            ExceptionAssert.ThrowsArgument(() => merger.Merge(new ChunkTree(), new LiteralChunk()), "chunk", expected);
        }
コード例 #5
0
        public void Merge_ThrowsIfThePassedInChunkIsNotAInjectChunk()
        {
            // Arrange
            var expected = "Argument must be an instance of 'Microsoft.AspNet.Mvc.Razor.InjectChunk'.";
            var merger   = new InjectChunkMerger("dynamic");

            // Act and Assert
            ExceptionAssert.ThrowsArgument(() => merger.Merge(new ChunkTree(), new LiteralChunk()), "chunk", expected);
        }
コード例 #6
0
        public void Visit_UpdatesTModelTokenToMatchModelType(string typeName, string expectedValue)
        {
            // Arrange
            var chunk = new InjectChunk(typeName, "TestHelper");
            var merger = new InjectChunkMerger("Person");

            // Act
            merger.VisitChunk(chunk);

            // Assert
            Assert.Equal(expectedValue, chunk.TypeName);
            Assert.Equal("TestHelper", chunk.MemberName);
        }
コード例 #7
0
        public void Visit_UpdatesTModelTokenToMatchModelType(string typeName, string expectedValue)
        {
            // Arrange
            var chunk  = new InjectChunk(typeName, "TestHelper");
            var merger = new InjectChunkMerger("Person");

            // Act
            merger.VisitChunk(chunk);

            // Assert
            Assert.Equal(expectedValue, chunk.TypeName);
            Assert.Equal("TestHelper", chunk.MemberName);
        }
コード例 #8
0
ファイル: InjectChunkMergerTest.cs プロジェクト: notami18/Mvc
        public void Merge_IgnoresChunkIfChunkWithMatchingPropertyNameWasVisitedInChunkTree()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.VisitChunk(new InjectChunk("MyTypeA", "MyProperty"));
            merger.Merge(chunkTree, new InjectChunk("MyTypeB", "MyProperty"));

            // Assert
            Assert.Empty(chunkTree.Chunks);
        }
コード例 #9
0
        public void Merge_IgnoresChunkIfChunkWithMatchingPropertyNameWasVisitedInChunkTree()
        {
            // Arrange
            var merger    = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.VisitChunk(new InjectChunk("MyTypeA", "MyProperty"));
            merger.Merge(chunkTree, new InjectChunk("MyTypeB", "MyProperty"));

            // Assert
            Assert.Empty(chunkTree.Chunks);
        }
コード例 #10
0
        public void Merge_ReplacesTModelTokensWithModel()
        {
            // Arrange
            var merger    = new InjectChunkMerger("MyTestModel2");
            var chunkTree = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk("MyHelper<TModel>", "MyProperty"));

            // Assert
            var chunk       = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType <InjectChunk>(chunk);

            Assert.Equal("MyHelper<MyTestModel2>", injectChunk.TypeName);
            Assert.Equal("MyProperty", injectChunk.MemberName);
        }
コード例 #11
0
        public void Merge_ResolvesModelNameInTypesWithTModelToken()
        {
            // Arrange
            var merger    = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk("MyHelper<TModel>", "MyProperty"));

            // Assert
            var chunk       = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType <InjectChunk>(chunk);

            Assert.Equal("MyHelper<dynamic>", injectChunk.TypeName);
            Assert.Equal("MyProperty", injectChunk.MemberName);
        }
コード例 #12
0
ファイル: InjectChunkMergerTest.cs プロジェクト: notami18/Mvc
        public void Merge_AddsChunkIfChunkWithMatchingPropertyNameWasNotVisitedInChunkTree()
        {
            // Arrange
            var expectedType = "MyApp.MyHelperType";
            var expectedProperty = "MyHelper";
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk(expectedType, expectedProperty));

            // Assert
            var chunk = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType<InjectChunk>(chunk);
            Assert.Equal(expectedType, injectChunk.TypeName);
            Assert.Equal(expectedProperty, injectChunk.MemberName);
        }
コード例 #13
0
        public void Merge_IgnoresChunkIfChunkWithMatchingPropertyNameWasPreviouslyMerged()
        {
            // Arrange
            var merger    = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk("SomeType", "Property"));
            merger.Merge(chunkTree, new InjectChunk("SomeOtherType", "Property"));

            // Assert
            var chunk       = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType <InjectChunk>(chunk);

            Assert.Equal("SomeType", injectChunk.TypeName);
            Assert.Equal("Property", injectChunk.MemberName);
        }
コード例 #14
0
        public void Merge_AddsChunkIfChunkWithMatchingPropertyNameWasNotVisitedInChunkTree()
        {
            // Arrange
            var expectedType     = "MyApp.MyHelperType";
            var expectedProperty = "MyHelper";
            var merger           = new InjectChunkMerger("dynamic");
            var chunkTree        = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk(expectedType, expectedProperty));

            // Assert
            var chunk       = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType <InjectChunk>(chunk);

            Assert.Equal(expectedType, injectChunk.TypeName);
            Assert.Equal(expectedProperty, injectChunk.MemberName);
        }
コード例 #15
0
ファイル: InjectChunkMergerTest.cs プロジェクト: notami18/Mvc
        public void Merge_IgnoresChunkIfChunkWithMatchingPropertyNameWasPreviouslyMerged()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();

            // Act
            merger.Merge(chunkTree, new InjectChunk("SomeType", "Property"));
            merger.Merge(chunkTree, new InjectChunk("SomeOtherType", "Property"));

            // Assert
            var chunk = Assert.Single(chunkTree.Chunks);
            var injectChunk = Assert.IsType<InjectChunk>(chunk);
            Assert.Equal("SomeType", injectChunk.TypeName);
            Assert.Equal("Property", injectChunk.MemberName);
        }
コード例 #16
0
        public void Merge_UsesTheLastInjectChunkOfAPropertyName()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();
            var inheritedChunks = new Chunk[]
            {
                new LiteralChunk(),
                new InjectChunk("SomeOtherType", "Property"),
                new InjectChunk("DifferentPropertyType", "DifferentProperty"),
                new InjectChunk("SomeType", "Property"),
            };

            // Act
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            Assert.Collection(chunkTree.Children,
                chunk =>
                {
                    var injectChunk = Assert.IsType<InjectChunk>(chunk);
                    Assert.Equal("SomeType", injectChunk.TypeName);
                    Assert.Equal("Property", injectChunk.MemberName);
                },
                chunk =>
                {
                    var injectChunk = Assert.IsType<InjectChunk>(chunk);
                    Assert.Equal("DifferentPropertyType", injectChunk.TypeName);
                    Assert.Equal("DifferentProperty", injectChunk.MemberName);
                });
        }
コード例 #17
0
        public void Merge_ReplacesTModelTokensWithModel()
        {
            // Arrange
            var merger = new InjectChunkMerger("MyTestModel2");
            var chunkTree = new ChunkTree();
            var inheritedChunks = new[]
            {
                new InjectChunk("MyHelper<TModel>", "MyProperty")
            };

            // Act
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            var chunk = Assert.Single(chunkTree.Children);
            var injectChunk = Assert.IsType<InjectChunk>(chunk);
            Assert.Equal("MyHelper<MyTestModel2>", injectChunk.TypeName);
            Assert.Equal("MyProperty", injectChunk.MemberName);
        }
コード例 #18
0
        public void Merge_ResolvesModelNameInTypesWithTModelToken()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var chunkTree = new ChunkTree();
            var inheritedChunks = new[]
            {
                new InjectChunk("MyHelper<TModel>", "MyProperty")
            };

            // Act
            merger.MergeInheritedChunks(chunkTree, inheritedChunks);

            // Assert
            var chunk = Assert.Single(chunkTree.Children);
            var injectChunk = Assert.IsType<InjectChunk>(chunk);
            Assert.Equal("MyHelper<dynamic>", injectChunk.TypeName);
            Assert.Equal("MyProperty", injectChunk.MemberName);
        }
コード例 #19
0
        public void Merge_MatchesPropertyNameInCaseSensitiveManner()
        {
            // Arrange
            var merger = new InjectChunkMerger("dynamic");
            var codeTree = new CodeTree();

            // Act
            merger.VisitChunk(new InjectChunk("MyType", "MyProperty"));
            merger.Merge(codeTree, new InjectChunk("MyType", "myproperty"));
            merger.Merge(codeTree, new InjectChunk("MyTypeB", "different-property"));

            // Assert
            Assert.Equal(2, codeTree.Chunks.Count);
            var injectChunk = Assert.IsType<InjectChunk>(codeTree.Chunks[0]);
            Assert.Equal("MyType", injectChunk.TypeName);
            Assert.Equal("myproperty", injectChunk.MemberName);

            injectChunk = Assert.IsType<InjectChunk>(codeTree.Chunks[1]);
            Assert.Equal("MyTypeB", injectChunk.TypeName);
            Assert.Equal("different-property", injectChunk.MemberName);
        }