diff --git a/Mvc.NoFun.sln b/Mvc.NoFun.sln index fb1c1ae0d8..9d0aa0c826 100644 --- a/Mvc.NoFun.sln +++ b/Mvc.NoFun.sln @@ -58,6 +58,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.PageExecut EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Common.Test", "test\Microsoft.AspNet.Mvc.Common.Test\Microsoft.AspNet.Mvc.Common.Test.xproj", "{0449D6D2-BE1B-4E29-8E1B-444420802C03}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.TestCommon", "test\Microsoft.AspNet.Mvc.TestCommon\Microsoft.AspNet.Mvc.TestCommon.xproj", "{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -304,6 +306,18 @@ Global {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|Mixed Platforms.Build.0 = Release|Any CPU {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|x86.ActiveCfg = Release|Any CPU {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|x86.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|x86.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|x86.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Any CPU.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|x86.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -331,5 +345,6 @@ Global {22019146-BDFA-442E-8C8E-345FB9644578} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1} {4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} {0449D6D2-BE1B-4E29-8E1B-444420802C03} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1} + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1} EndGlobalSection EndGlobal diff --git a/Mvc.sln b/Mvc.sln index 06fed2a4f2..89c0a722ec 100644 --- a/Mvc.sln +++ b/Mvc.sln @@ -150,6 +150,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LowercaseUrlsWebSite", "tes EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "TempDataWebSite", "test\WebSites\TempDataWebSite\TempDataWebSite.xproj", "{8AEB631E-AB74-4D2E-83FB-8931EE10D9D3}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.TestCommon", "test\Microsoft.AspNet.Mvc.TestCommon\Microsoft.AspNet.Mvc.TestCommon.xproj", "{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -880,6 +882,18 @@ Global {8AEB631E-AB74-4D2E-83FB-8931EE10D9D3}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8AEB631E-AB74-4D2E-83FB-8931EE10D9D3}.Release|x86.ActiveCfg = Release|Any CPU {8AEB631E-AB74-4D2E-83FB-8931EE10D9D3}.Release|x86.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|x86.ActiveCfg = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|x86.Build.0 = Debug|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Any CPU.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|x86.ActiveCfg = Release|Any CPU + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -953,5 +967,6 @@ Global {B11C99C9-E577-4CA2-AC53-4F20EA71AD34} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} {BCDB13A6-7D6E-485E-8424-A156432B71AC} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} {8AEB631E-AB74-4D2E-83FB-8931EE10D9D3} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} + {F504357E-C2E1-4818-BA5C-9A2EAC25FEE5} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1} EndGlobalSection EndGlobal diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/TestModelMetadataProvider.cs b/test/Microsoft.AspNet.Mvc.Core.Test/TestModelMetadataProvider.cs deleted file mode 100644 index 45e59337df..0000000000 --- a/test/Microsoft.AspNet.Mvc.Core.Test/TestModelMetadataProvider.cs +++ /dev/null @@ -1,183 +0,0 @@ -// 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 System.Reflection; -using Microsoft.AspNet.Mvc.ModelBinding.Metadata; -using Microsoft.Framework.Internal; -using Xunit; - -namespace Microsoft.AspNet.Mvc.ModelBinding -{ - public class TestModelMetadataProvider : DefaultModelMetadataProvider - { - // Creates a provider with all the defaults - includes data annotations - public static IModelMetadataProvider CreateDefaultProvider() - { - var detailsProviders = new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - }; - - var compositeDetailsProvider = new DefaultCompositeMetadataDetailsProvider(detailsProviders); - return new DefaultModelMetadataProvider(compositeDetailsProvider); - } - - private readonly TestModelMetadataDetailsProvider _detailsProvider; - - public TestModelMetadataProvider() - : this(new TestModelMetadataDetailsProvider()) - { - } - - private TestModelMetadataProvider(TestModelMetadataDetailsProvider detailsProvider) - : base(new DefaultCompositeMetadataDetailsProvider(new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - detailsProvider - })) - { - _detailsProvider = detailsProvider; - } - - public IMetadataBuilder ForType(Type type) - { - var key = ModelMetadataIdentity.ForType(type); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForType() - { - return ForType(typeof(TModel)); - } - - public IMetadataBuilder ForProperty(Type containerType, string propertyName) - { - var property = containerType.GetRuntimeProperty(propertyName); - Assert.NotNull(property); - - var key = ModelMetadataIdentity.ForProperty(property.PropertyType, property.Name, containerType); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForProperty(string propertyName) - { - return ForProperty(typeof(TContainer), propertyName); - } - - private class TestModelMetadataDetailsProvider : - IBindingMetadataProvider, - IDisplayMetadataProvider, - IValidationMetadataProvider - { - public List Builders { get; } = new List(); - - public void GetBindingMetadata([NotNull] BindingMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetDisplayMetadata([NotNull] DisplayMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetValidationMetadata([NotNull] ValidationMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - } - - public interface IMetadataBuilder - { - IMetadataBuilder BindingDetails(Action action); - - IMetadataBuilder DisplayDetails(Action action); - - IMetadataBuilder ValidationDetails(Action action); - } - - private class MetadataBuilder : IMetadataBuilder - { - private List> _bindingActions = new List>(); - private List> _displayActions = new List>(); - private List> _valiationActions = new List>(); - - private readonly ModelMetadataIdentity _key; - - public MetadataBuilder(ModelMetadataIdentity key) - { - _key = key; - } - - public void Apply(BindingMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _bindingActions) - { - action(context.BindingMetadata); - } - } - } - - public void Apply(DisplayMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _displayActions) - { - action(context.DisplayMetadata); - } - } - } - - public void Apply(ValidationMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _valiationActions) - { - action(context.ValidationMetadata); - } - } - } - - public IMetadataBuilder BindingDetails(Action action) - { - _bindingActions.Add(action); - return this; - } - - public IMetadataBuilder DisplayDetails(Action action) - { - _displayActions.Add(action); - return this; - } - - public IMetadataBuilder ValidationDetails(Action action) - { - _valiationActions.Add(action); - return this; - } - } - } -} \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/project.json b/test/Microsoft.AspNet.Mvc.Core.Test/project.json index 30a27d8c3a..18c9d594b7 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.Core.Test/project.json @@ -4,7 +4,8 @@ }, "dependencies": { "Microsoft.AspNet.Mvc" : "6.0.0-*", - "Microsoft.AspNet.Mvc.Xml" : "6.0.0-*", + "Microsoft.AspNet.Mvc.TestCommon": { "version": "6.0.0-*", "type": "build" }, + "Microsoft.AspNet.Mvc.Xml": "6.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*", "Moq": "4.2.1312.1622", "xunit.runner.aspnet": "2.0.0-aspnet-*" diff --git a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/TestModelMetadataProvider.cs b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/TestModelMetadataProvider.cs deleted file mode 100644 index 45e59337df..0000000000 --- a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/TestModelMetadataProvider.cs +++ /dev/null @@ -1,183 +0,0 @@ -// 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 System.Reflection; -using Microsoft.AspNet.Mvc.ModelBinding.Metadata; -using Microsoft.Framework.Internal; -using Xunit; - -namespace Microsoft.AspNet.Mvc.ModelBinding -{ - public class TestModelMetadataProvider : DefaultModelMetadataProvider - { - // Creates a provider with all the defaults - includes data annotations - public static IModelMetadataProvider CreateDefaultProvider() - { - var detailsProviders = new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - }; - - var compositeDetailsProvider = new DefaultCompositeMetadataDetailsProvider(detailsProviders); - return new DefaultModelMetadataProvider(compositeDetailsProvider); - } - - private readonly TestModelMetadataDetailsProvider _detailsProvider; - - public TestModelMetadataProvider() - : this(new TestModelMetadataDetailsProvider()) - { - } - - private TestModelMetadataProvider(TestModelMetadataDetailsProvider detailsProvider) - : base(new DefaultCompositeMetadataDetailsProvider(new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - detailsProvider - })) - { - _detailsProvider = detailsProvider; - } - - public IMetadataBuilder ForType(Type type) - { - var key = ModelMetadataIdentity.ForType(type); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForType() - { - return ForType(typeof(TModel)); - } - - public IMetadataBuilder ForProperty(Type containerType, string propertyName) - { - var property = containerType.GetRuntimeProperty(propertyName); - Assert.NotNull(property); - - var key = ModelMetadataIdentity.ForProperty(property.PropertyType, property.Name, containerType); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForProperty(string propertyName) - { - return ForProperty(typeof(TContainer), propertyName); - } - - private class TestModelMetadataDetailsProvider : - IBindingMetadataProvider, - IDisplayMetadataProvider, - IValidationMetadataProvider - { - public List Builders { get; } = new List(); - - public void GetBindingMetadata([NotNull] BindingMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetDisplayMetadata([NotNull] DisplayMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetValidationMetadata([NotNull] ValidationMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - } - - public interface IMetadataBuilder - { - IMetadataBuilder BindingDetails(Action action); - - IMetadataBuilder DisplayDetails(Action action); - - IMetadataBuilder ValidationDetails(Action action); - } - - private class MetadataBuilder : IMetadataBuilder - { - private List> _bindingActions = new List>(); - private List> _displayActions = new List>(); - private List> _valiationActions = new List>(); - - private readonly ModelMetadataIdentity _key; - - public MetadataBuilder(ModelMetadataIdentity key) - { - _key = key; - } - - public void Apply(BindingMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _bindingActions) - { - action(context.BindingMetadata); - } - } - } - - public void Apply(DisplayMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _displayActions) - { - action(context.DisplayMetadata); - } - } - } - - public void Apply(ValidationMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _valiationActions) - { - action(context.ValidationMetadata); - } - } - } - - public IMetadataBuilder BindingDetails(Action action) - { - _bindingActions.Add(action); - return this; - } - - public IMetadataBuilder DisplayDetails(Action action) - { - _displayActions.Add(action); - return this; - } - - public IMetadataBuilder ValidationDetails(Action action) - { - _valiationActions.Add(action); - return this; - } - } - } -} \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json index 81bdcaa3fc..d5d5ad4607 100644 --- a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json @@ -3,8 +3,10 @@ "warningsAsErrors": "true" }, "dependencies": { + "Microsoft.AspNet.FileProviders": "1.0.0-*", "Microsoft.AspNet.Http.Core": "1.0.0-*", "Microsoft.AspNet.Mvc.ModelBinding": "", + "Microsoft.AspNet.Mvc.TestCommon": { "version": "6.0.0-*", "type": "build" }, "Microsoft.AspNet.Testing": "1.0.0-*", "Moq": "4.2.1312.1622", "xunit.runner.aspnet": "2.0.0-aspnet-*" diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Properties/AssemblyInfo.cs b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..d82817b70e --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,6 @@ +// 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.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/project.json b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/project.json index 7a8cf3119d..387a80734b 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/project.json @@ -1,7 +1,9 @@ { "resources": "TestFiles/**", "dependencies": { + "Microsoft.AspNet.Mvc.ModelBinding": "6.0.0-*", "Microsoft.AspNet.Mvc.Razor.Host": "6.0.0-*", + "Microsoft.AspNet.Mvc.TestCommon": { "version": "6.0.0-*", "type": "build" }, "Microsoft.AspNet.Testing": "1.0.0-*", "xunit.runner.aspnet": "2.0.0-aspnet-*" }, diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/Compilation/CompilerCacheTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/Compilation/CompilerCacheTest.cs index cd0025956b..e2f4ff9d99 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/Compilation/CompilerCacheTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/Compilation/CompilerCacheTest.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Reflection; using System.Text; +using Microsoft.AspNet.FileProviders; using Microsoft.Framework.Runtime; using Moq; using Xunit; @@ -491,7 +492,7 @@ namespace Microsoft.AspNet.Mvc.Razor [Theory] [MemberData(nameof(GetOrAdd_IgnoresCachedValue_IfGlobalWasChangedSinceCacheWasCreatedData))] public void GetOrAdd_IgnoresCachedValue_IfGlobalFileWasChangedSinceCacheWasCreated( - RazorFileInfo viewStartRazorFileInfo, TestFileInfo globalFileInfo) + RazorFileInfo viewStartRazorFileInfo, IFileInfo globalFileInfo) { // Arrange var expectedType = typeof(RuntimeCompileDifferent); diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/Properties/AssemblyInfo.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..d82817b70e --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,6 @@ +// 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.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/TestModelMetadataProvider.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/TestModelMetadataProvider.cs deleted file mode 100644 index 7bea755490..0000000000 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/TestModelMetadataProvider.cs +++ /dev/null @@ -1,182 +0,0 @@ -// 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 System.Reflection; -using Microsoft.AspNet.Mvc.ModelBinding.Metadata; -using Xunit; - -namespace Microsoft.AspNet.Mvc.ModelBinding -{ - public class TestModelMetadataProvider : DefaultModelMetadataProvider - { - // Creates a provider with all the defaults - includes data annotations - public static IModelMetadataProvider CreateDefaultProvider() - { - var detailsProviders = new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - }; - - var compositeDetailsProvider = new DefaultCompositeMetadataDetailsProvider(detailsProviders); - return new DefaultModelMetadataProvider(compositeDetailsProvider); - } - - private readonly TestModelMetadataDetailsProvider _detailsProvider; - - public TestModelMetadataProvider() - : this(new TestModelMetadataDetailsProvider()) - { - } - - private TestModelMetadataProvider(TestModelMetadataDetailsProvider detailsProvider) - : base(new DefaultCompositeMetadataDetailsProvider(new IMetadataDetailsProvider[] - { - new DefaultBindingMetadataProvider(), - new DataAnnotationsMetadataDetailsProvider(), - detailsProvider - })) - { - _detailsProvider = detailsProvider; - } - - public IMetadataBuilder ForType(Type type) - { - var key = ModelMetadataIdentity.ForType(type); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForType() - { - return ForType(typeof(TModel)); - } - - public IMetadataBuilder ForProperty(Type containerType, string propertyName) - { - var property = containerType.GetRuntimeProperty(propertyName); - Assert.NotNull(property); - - var key = ModelMetadataIdentity.ForProperty(property.PropertyType, propertyName, containerType); - - var builder = new MetadataBuilder(key); - _detailsProvider.Builders.Add(builder); - return builder; - } - - public IMetadataBuilder ForProperty(string propertyName) - { - return ForProperty(typeof(TContainer), propertyName); - } - - private class TestModelMetadataDetailsProvider : - IBindingMetadataProvider, - IDisplayMetadataProvider, - IValidationMetadataProvider - { - public List Builders { get; } = new List(); - - public void GetBindingMetadata(BindingMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetDisplayMetadata(DisplayMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - - public void GetValidationMetadata(ValidationMetadataProviderContext context) - { - foreach (var builder in Builders) - { - builder.Apply(context); - } - } - } - - public interface IMetadataBuilder - { - IMetadataBuilder BindingDetails(Action action); - - IMetadataBuilder DisplayDetails(Action action); - - IMetadataBuilder ValidationDetails(Action action); - } - - private class MetadataBuilder : IMetadataBuilder - { - private List> _bindingActions = new List>(); - private List> _displayActions = new List>(); - private List> _valiationActions = new List>(); - - private readonly ModelMetadataIdentity _key; - - public MetadataBuilder(ModelMetadataIdentity key) - { - _key = key; - } - - public void Apply(BindingMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _bindingActions) - { - action(context.BindingMetadata); - } - } - } - - public void Apply(DisplayMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _displayActions) - { - action(context.DisplayMetadata); - } - } - } - - public void Apply(ValidationMetadataProviderContext context) - { - if (_key.Equals(context.Key)) - { - foreach (var action in _valiationActions) - { - action(context.ValidationMetadata); - } - } - } - - public IMetadataBuilder BindingDetails(Action action) - { - _bindingActions.Add(action); - return this; - } - - public IMetadataBuilder DisplayDetails(Action action) - { - _displayActions.Add(action); - return this; - } - - public IMetadataBuilder ValidationDetails(Action action) - { - _valiationActions.Add(action); - return this; - } - } - } -} \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/project.json b/test/Microsoft.AspNet.Mvc.Razor.Test/project.json index 3fb7b7494a..abe5948de8 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/project.json @@ -7,6 +7,7 @@ ], "dependencies": { "Microsoft.AspNet.Mvc.Razor": "6.0.0-*", + "Microsoft.AspNet.Mvc.TestCommon": { "version": "6.0.0-*", "type": "build" }, "Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.Framework.Runtime": "1.0.0-*", "xunit.runner.aspnet": "2.0.0-aspnet-*" diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/project.json b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/project.json index 0c5a1c7f02..893475dbd2 100644 --- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/project.json @@ -1,6 +1,7 @@ { "dependencies": { "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-*", + "Microsoft.AspNet.Mvc.TestCommon": { "version": "6.0.0-*", "type": "build" }, "Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.Framework.Logging.Interfaces": "1.0.0-*", "xunit.runner.aspnet": "2.0.0-aspnet-*" diff --git a/test/Microsoft.AspNet.Mvc.TestCommon/Microsoft.AspNet.Mvc.TestCommon.xproj b/test/Microsoft.AspNet.Mvc.TestCommon/Microsoft.AspNet.Mvc.TestCommon.xproj new file mode 100644 index 0000000000..ff3dd3768c --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.TestCommon/Microsoft.AspNet.Mvc.TestCommon.xproj @@ -0,0 +1,17 @@ + + + + 14.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + f504357e-c2e1-4818-ba5c-9a2eac25fee5 + ..\..\artifacts\obj\$(MSBuildProjectName) + ..\..\artifacts\bin\$(MSBuildProjectName)\ + + + 2.0 + + + \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileInfo.cs b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileInfo.cs similarity index 96% rename from test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileInfo.cs rename to test/Microsoft.AspNet.Mvc.TestCommon/TestFileInfo.cs index c56cb96ed6..6e23cbbd0e 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileInfo.cs +++ b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileInfo.cs @@ -8,7 +8,7 @@ using Microsoft.AspNet.FileProviders; namespace Microsoft.AspNet.Mvc.Razor { - public class TestFileInfo : IFileInfo + internal class TestFileInfo : IFileInfo { private string _content; diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileProvider.cs b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileProvider.cs similarity index 94% rename from test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileProvider.cs rename to test/Microsoft.AspNet.Mvc.TestCommon/TestFileProvider.cs index fc75460371..a149075ad2 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileProvider.cs +++ b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileProvider.cs @@ -9,7 +9,7 @@ using Microsoft.Framework.Expiration.Interfaces; namespace Microsoft.AspNet.Mvc.Razor { - public class TestFileProvider : IFileProvider + internal class TestFileProvider : IFileProvider { private readonly Dictionary _lookup = new Dictionary(StringComparer.Ordinal); @@ -34,7 +34,7 @@ namespace Microsoft.AspNet.Mvc.Razor AddFile(path, fileInfo); } - public void AddFile(string path, TestFileInfo contents) + public void AddFile(string path, IFileInfo contents) { _lookup[path] = contents; } diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileTrigger.cs b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileTrigger.cs similarity index 90% rename from test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileTrigger.cs rename to test/Microsoft.AspNet.Mvc.TestCommon/TestFileTrigger.cs index 48ba37da23..a7cfdf4716 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/TestFileTrigger.cs +++ b/test/Microsoft.AspNet.Mvc.TestCommon/TestFileTrigger.cs @@ -6,7 +6,7 @@ using Microsoft.Framework.Expiration.Interfaces; namespace Microsoft.AspNet.Mvc.Razor { - public class TestFileTrigger : IExpirationTrigger + internal class TestFileTrigger : IExpirationTrigger { public bool ActiveExpirationCallbacks { get; } = false; diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TestModelMetadataProvider.cs b/test/Microsoft.AspNet.Mvc.TestCommon/TestModelMetadataProvider.cs similarity index 98% rename from test/Microsoft.AspNet.Mvc.TagHelpers.Test/TestModelMetadataProvider.cs rename to test/Microsoft.AspNet.Mvc.TestCommon/TestModelMetadataProvider.cs index 864349fd13..6b18cb7a70 100644 --- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TestModelMetadataProvider.cs +++ b/test/Microsoft.AspNet.Mvc.TestCommon/TestModelMetadataProvider.cs @@ -10,7 +10,7 @@ using Xunit; namespace Microsoft.AspNet.Mvc.ModelBinding { - public class TestModelMetadataProvider : DefaultModelMetadataProvider + internal class TestModelMetadataProvider : DefaultModelMetadataProvider { // Creates a provider with all the defaults - includes data annotations public static IModelMetadataProvider CreateDefaultProvider() @@ -30,7 +30,6 @@ namespace Microsoft.AspNet.Mvc.ModelBinding public TestModelMetadataProvider() : this(new TestModelMetadataDetailsProvider()) { - } private TestModelMetadataProvider(TestModelMetadataDetailsProvider detailsProvider) diff --git a/test/Microsoft.AspNet.Mvc.TestCommon/project.json b/test/Microsoft.AspNet.Mvc.TestCommon/project.json new file mode 100644 index 0000000000..117fd7d664 --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.TestCommon/project.json @@ -0,0 +1,6 @@ +{ + "version": "6.0.0-*", + "shared": "*.cs", + "dependencies": { + } +} \ No newline at end of file