Hello, you've reached the about page.
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Help.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Help.html
index 6b4eb8c191..f4ef7b21d0 100644
--- a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Help.html
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Help.html
@@ -33,6 +33,7 @@
+
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Index.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Index.html
index ce0fcbfdf6..180d61bac5 100644
--- a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Index.html
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/TagHelpersWebSite.Home.Index.html
@@ -41,6 +41,7 @@
+
This website has not been approved yet. Visit www.contoso.com for more information.
diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs
index 1cf55f8b28..8854adcb1e 100644
--- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs
+++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs
@@ -1,10 +1,7 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-using System;
-using System.Collections.Generic;
using Microsoft.AspNet.Razor.Generator.Compiler;
-using Moq;
using Xunit;
namespace Microsoft.AspNet.Mvc.Razor.Directives
@@ -29,24 +26,30 @@ namespace Microsoft.AspNet.Mvc.Razor.Directives
");
var host = new MvcRazorHost(fileSystem);
- var utility = new ChunkInheritanceUtility(new CodeTree(), new Chunk[0], "dynamic");
+ var utility = new ChunkInheritanceUtility(host, fileSystem, new Chunk[0]);
// Act
- var chunks = utility.GetInheritedChunks(host,
- fileSystem,
- @"x:\myapproot\views\home\Index.cshtml");
+ var chunks = utility.GetInheritedChunks(@"x:\myapproot\views\home\Index.cshtml");
// Assert
- Assert.Equal(3, chunks.Count);
- var usingChunk = Assert.IsType
(chunks[0]);
+ Assert.Equal(8, chunks.Count);
+ Assert.IsType(chunks[0]);
+
+ var usingChunk = Assert.IsType(chunks[1]);
Assert.Equal("MyNamespace", usingChunk.Namespace);
- var injectChunk = Assert.IsType(chunks[1]);
+ Assert.IsType(chunks[2]);
+ Assert.IsType(chunks[3]);
+
+ var injectChunk = Assert.IsType(chunks[4]);
Assert.Equal("MyHelper", injectChunk.TypeName);
Assert.Equal("Helper", injectChunk.MemberName);
- var setBaseTypeChunk = Assert.IsType(chunks[2]);
+ var setBaseTypeChunk = Assert.IsType(chunks[5]);
Assert.Equal("MyBaseType", setBaseTypeChunk.TypeName);
+
+ Assert.IsType(chunks[6]);
+ Assert.IsType(chunks[7]);
}
[Fact]
@@ -58,12 +61,10 @@ namespace Microsoft.AspNet.Mvc.Razor.Directives
fileSystem.AddFile(@"x:\myapproot\views\_Layout.cshtml", string.Empty);
fileSystem.AddFile(@"x:\myapproot\views\home\_not-viewstart.cshtml", string.Empty);
var host = new MvcRazorHost(fileSystem);
- var utility = new ChunkInheritanceUtility(new CodeTree(), new Chunk[0], "dynamic");
+ var utility = new ChunkInheritanceUtility(host, fileSystem, new Chunk[0]);
// Act
- var chunks = utility.GetInheritedChunks(host,
- fileSystem,
- @"x:\myapproot\views\home\Index.cshtml");
+ var chunks = utility.GetInheritedChunks(@"x:\myapproot\views\home\Index.cshtml");
// Assert
Assert.Empty(chunks);
@@ -75,73 +76,26 @@ namespace Microsoft.AspNet.Mvc.Razor.Directives
// Arrange
var fileSystem = new TestFileSystem();
fileSystem.AddFile(@"x:\myapproot\views\_viewstart.cshtml",
-@"@inject DifferentHelper Html
-@using AppNamespace.Models
-@{
- Layout = ""test.cshtml"";
-}
-
-");
+ "@inject DifferentHelper Html");
var host = new MvcRazorHost(fileSystem);
var defaultChunks = new Chunk[]
{
new InjectChunk("MyTestHtmlHelper", "Html"),
new UsingChunk { Namespace = "AppNamespace.Model" },
};
- var utility = new ChunkInheritanceUtility(new CodeTree(), defaultChunks, "dynamic");
+ var utility = new ChunkInheritanceUtility(host, fileSystem, defaultChunks);
// Act
- var chunks = utility.GetInheritedChunks(host,
- fileSystem,
- @"x:\myapproot\views\home\Index.cshtml");
+ var chunks = utility.GetInheritedChunks(@"x:\myapproot\views\home\Index.cshtml");
// Assert
Assert.Equal(4, chunks.Count);
- var injectChunk = Assert.IsType(chunks[0]);
+ var injectChunk = Assert.IsType(chunks[1]);
Assert.Equal("DifferentHelper", injectChunk.TypeName);
Assert.Equal("Html", injectChunk.MemberName);
- var usingChunk = Assert.IsType(chunks[1]);
- Assert.Equal("AppNamespace.Models", usingChunk.Namespace);
-
- injectChunk = Assert.IsType(chunks[2]);
- Assert.Equal("MyTestHtmlHelper", injectChunk.TypeName);
- Assert.Equal("Html", injectChunk.MemberName);
-
- usingChunk = Assert.IsType(chunks[3]);
- Assert.Equal("AppNamespace.Model", usingChunk.Namespace);
- }
-
- [Fact]
- public void MergeChunks_VisitsChunksPriorToMerging()
- {
- // Arrange
- var codeTree = new CodeTree();
- codeTree.Chunks.Add(new LiteralChunk());
- codeTree.Chunks.Add(new ExpressionBlockChunk());
- codeTree.Chunks.Add(new ExpressionBlockChunk());
-
- var merger = new Mock();
- var mockSequence = new MockSequence();
- merger.InSequence(mockSequence)
- .Setup(m => m.VisitChunk(It.IsAny()))
- .Verifiable();
- merger.InSequence(mockSequence)
- .Setup(m => m.Merge(codeTree, It.IsAny()))
- .Verifiable();
- var inheritedChunks = new List
- {
- new CodeAttributeChunk(),
- new LiteralChunk()
- };
- var utility = new ChunkInheritanceUtility(codeTree, inheritedChunks, "dynamic");
-
- // Act
- utility.ChunkMergers[typeof(LiteralChunk)] = merger.Object;
- utility.MergeInheritedChunks(inheritedChunks);
-
- // Assert
- merger.Verify();
+ Assert.Same(defaultChunks[0], chunks[2]);
+ Assert.Same(defaultChunks[1], chunks[3]);
}
}
}
\ No newline at end of file
diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileSystem.cs b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileSystem.cs
index 99fea29910..7762c1ca92 100644
--- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileSystem.cs
+++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileSystem.cs
@@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{
var fileInfo = new Mock();
fileInfo.Setup(f => f.CreateReadStream())
- .Returns(new MemoryStream(Encoding.UTF8.GetBytes(contents)));
+ .Returns(() => new MemoryStream(Encoding.UTF8.GetBytes(contents)));
fileInfo.SetupGet(f => f.PhysicalPath)
.Returns(path);
fileInfo.SetupGet(f => f.Name)
diff --git a/test/WebSites/TagHelpersWebSite/Controllers/HomeController.cs b/test/WebSites/TagHelpersWebSite/Controllers/HomeController.cs
index 11a64028cf..5005a39e68 100644
--- a/test/WebSites/TagHelpersWebSite/Controllers/HomeController.cs
+++ b/test/WebSites/TagHelpersWebSite/Controllers/HomeController.cs
@@ -29,5 +29,15 @@ namespace TagHelpersWebSite.Controllers
{
return View();
}
+
+ public ViewResult NestedViewStartTagHelper()
+ {
+ return View();
+ }
+
+ public ViewResult ViewWithLayoutAndNestedTagHelper()
+ {
+ return View();
+ }
}
}
\ No newline at end of file
diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/NestedViewStartTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/NestedViewStartTagHelper.cs
new file mode 100644
index 0000000000..4dc77707c3
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/TagHelpers/NestedViewStartTagHelper.cs
@@ -0,0 +1,18 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.Razor.Runtime.TagHelpers;
+using Microsoft.AspNet.Razor.TagHelpers;
+
+namespace TagHelpersWebSite.TagHelpers
+{
+ [TagName("nested")]
+ [ContentBehavior(ContentBehavior.Modify)]
+ public class NestedViewStartTagHelper : TagHelper
+ {
+ public override void Process(TagHelperContext context, TagHelperOutput output)
+ {
+ output.Content = "nested-content";
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/RootViewStartTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/RootViewStartTagHelper.cs
new file mode 100644
index 0000000000..18fdd2fed8
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/TagHelpers/RootViewStartTagHelper.cs
@@ -0,0 +1,18 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.Razor.Runtime.TagHelpers;
+using Microsoft.AspNet.Razor.TagHelpers;
+
+namespace TagHelpersWebSite.TagHelpers
+{
+ [TagName("root")]
+ [ContentBehavior(ContentBehavior.Replace)]
+ public class RootViewStartTagHelper : TagHelper
+ {
+ public override void Process(TagHelperContext context, TagHelperOutput output)
+ {
+ output.Content = "root-content";
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/WebSites/TagHelpersWebSite/Views/Home/NestedViewStartTagHelper.cshtml b/test/WebSites/TagHelpersWebSite/Views/Home/NestedViewStartTagHelper.cshtml
new file mode 100644
index 0000000000..dd0b4f2c1b
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/Views/Home/NestedViewStartTagHelper.cshtml
@@ -0,0 +1,7 @@
+@{
+ Layout = null;
+}
+
+
+
+some-content
diff --git a/test/WebSites/TagHelpersWebSite/Views/Home/_ViewStart.cshtml b/test/WebSites/TagHelpersWebSite/Views/Home/_ViewStart.cshtml
new file mode 100644
index 0000000000..05d7a078a5
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/Views/Home/_ViewStart.cshtml
@@ -0,0 +1 @@
+@addtaghelper "TagHelpersWebSite.TagHelpers.NestedViewStartTagHelper, TagHelpersWebSite"
\ No newline at end of file
diff --git a/test/WebSites/TagHelpersWebSite/Views/Shared/ViewWithLayoutAndNestedTagHelper.cshtml b/test/WebSites/TagHelpersWebSite/Views/Shared/ViewWithLayoutAndNestedTagHelper.cshtml
new file mode 100644
index 0000000000..65bca2e70e
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/Views/Shared/ViewWithLayoutAndNestedTagHelper.cshtml
@@ -0,0 +1,5 @@
+@{
+ Layout = "~/Views/Shared/_LayoutWithRootTagHelper.cshtml";
+}
+@addtaghelper "TagHelpersWebSite.TagHelpers.NestedViewStartTagHelper, TagHelpersWebSite"
+some-content
diff --git a/test/WebSites/TagHelpersWebSite/Views/Shared/_LayoutWithRootTagHelper.cshtml b/test/WebSites/TagHelpersWebSite/Views/Shared/_LayoutWithRootTagHelper.cshtml
new file mode 100644
index 0000000000..d08aa242dd
--- /dev/null
+++ b/test/WebSites/TagHelpersWebSite/Views/Shared/_LayoutWithRootTagHelper.cshtml
@@ -0,0 +1,2 @@
+
+@RenderBody()
\ No newline at end of file
diff --git a/test/WebSites/TagHelpersWebSite/Views/_ViewStart.cshtml b/test/WebSites/TagHelpersWebSite/Views/_ViewStart.cshtml
index ab23e9a239..543a92c7ac 100644
--- a/test/WebSites/TagHelpersWebSite/Views/_ViewStart.cshtml
+++ b/test/WebSites/TagHelpersWebSite/Views/_ViewStart.cshtml
@@ -1,3 +1,4 @@
@{
Layout = "/Views/Shared/_Layout.cshtml";
-}
\ No newline at end of file
+}
+@addtaghelper "TagHelpersWebSite.TagHelpers.RootViewStartTagHelper, TagHelpersWebSite"
\ No newline at end of file