Browse Source

Support ViewDataType in MvcTextTemplateHost.

pull/18/head
Matt Ward 15 years ago
parent
commit
4c7387b129
  1. 11
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
  2. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcClass.cs
  3. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs
  4. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcTextTemplateHost.cs
  5. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcViewFileGenerator.cs
  6. 16
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcClass.cs
  7. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassViewModel.cs
  8. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs
  9. 28
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateHost.cs
  10. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileGenerator.cs
  11. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
  12. 11
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeClass.cs
  13. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcClass.cs
  14. 7
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs
  15. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcTextTemplateHost.cs
  16. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcViewFileGenerator.cs
  17. 26
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableMvcTextTemplateHost.cs
  18. 10
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs
  19. 17
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProjectContent.cs
  20. 41
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
  21. 12
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcClassTests.cs
  22. 9
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassViewModelTests.cs
  23. 12
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
  24. 60
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateHostTests.cs
  25. 22
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileGeneratorTests.cs

11
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs

@ -240,6 +240,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -240,6 +240,7 @@ namespace ICSharpCode.AspNet.Mvc
viewGenerator.IsContentPage = IsContentPage;
viewGenerator.MasterPageFile = GetMasterPageFile();
viewGenerator.ModelClassName = GetModelClassName();
viewGenerator.ModelClassAssemblyLocation = GetModelClassAssemblyLocation();
viewGenerator.PrimaryContentPlaceHolderId = GetPrimaryContentPlaceHolderId();
viewGenerator.Project = selectedViewFolder.Project;
viewGenerator.Template = selectedViewTemplate;
@ -264,6 +265,16 @@ namespace ICSharpCode.AspNet.Mvc @@ -264,6 +265,16 @@ namespace ICSharpCode.AspNet.Mvc
return String.Empty;
}
string GetModelClassAssemblyLocation()
{
if (IsStronglyTypedView) {
if (SelectedModelClass != null) {
return SelectedModelClass.AssemblyLocation;
}
}
return String.Empty;
}
string GetPrimaryContentPlaceHolderId()
{
if (IsContentPage) {

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcClass.cs

@ -11,5 +11,6 @@ namespace ICSharpCode.AspNet.Mvc @@ -11,5 +11,6 @@ namespace ICSharpCode.AspNet.Mvc
string Name { get; }
string Namespace { get; }
string BaseClassFullName { get; }
string AssemblyLocation { get; }
}
}

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs

@ -12,6 +12,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -12,6 +12,7 @@ namespace ICSharpCode.AspNet.Mvc
{
IProject Project { get; }
string RootNamespace { get; }
string OutputAssemblyFullPath { get; }
void Save();
MvcTextTemplateLanguage GetTemplateLanguage();

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcTextTemplateHost.cs

@ -15,6 +15,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -15,6 +15,7 @@ namespace ICSharpCode.AspNet.Mvc
string ViewName { get; set; }
bool IsPartialView { get; set; }
string ViewDataTypeName { get; set; }
string ViewDataTypeAssemblyLocation { get; set; }
bool IsContentPage { get; set; }
string MasterPageFile { get; set; }
string PrimaryContentPlaceHolderID { get; set; }

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcViewFileGenerator.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -10,6 +10,7 @@ namespace ICSharpCode.AspNet.Mvc
{
IMvcProject Project { get; set; }
string ModelClassName { get; set; }
string ModelClassAssemblyLocation { get; set; }
bool IsContentPage { get; set; }
string MasterPageFile { get; set; }
string PrimaryContentPlaceHolderId { get; set; }

16
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcClass.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc
{
@ -39,5 +40,20 @@ namespace ICSharpCode.AspNet.Mvc @@ -39,5 +40,20 @@ namespace ICSharpCode.AspNet.Mvc
}
return String.Empty;
}
public string AssemblyLocation {
get { return GetAssemblyLocation(); }
}
string GetAssemblyLocation()
{
IProject project = GetProject();
return project.OutputAssemblyFullPath;
}
IProject GetProject()
{
return c.ProjectContent.Project as IProject;
}
}
}

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassViewModel.cs

@ -38,5 +38,9 @@ namespace ICSharpCode.AspNet.Mvc @@ -38,5 +38,9 @@ namespace ICSharpCode.AspNet.Mvc
public string FullName {
get { return mvcClass.FullName; }
}
public string AssemblyLocation {
get { return mvcClass.AssemblyLocation; }
}
}
}

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs

@ -28,6 +28,10 @@ namespace ICSharpCode.AspNet.Mvc @@ -28,6 +28,10 @@ namespace ICSharpCode.AspNet.Mvc
get { return Project.RootNamespace; }
}
public string OutputAssemblyFullPath {
get { return Project.OutputAssemblyFullPath; }
}
public void Save()
{
Project.Save();

28
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateHost.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Reflection;
using ICSharpCode.TextTemplating;
namespace ICSharpCode.AspNet.Mvc
@ -10,6 +11,8 @@ namespace ICSharpCode.AspNet.Mvc @@ -10,6 +11,8 @@ namespace ICSharpCode.AspNet.Mvc
{
string viewName = String.Empty;
string viewDataTypeName = String.Empty;
string viewDataTypeAssemblyLocation = String.Empty;
Type viewDataType;
string @namespace = String.Empty;
string masterPageFile = String.Empty;
string primaryContentPlaceHolderID = String.Empty;
@ -54,6 +57,31 @@ namespace ICSharpCode.AspNet.Mvc @@ -54,6 +57,31 @@ namespace ICSharpCode.AspNet.Mvc
set { viewDataTypeName = UseEmptyStringIfNull(value); }
}
public string ViewDataTypeAssemblyLocation {
get { return viewDataTypeAssemblyLocation; }
set { viewDataTypeAssemblyLocation = UseEmptyStringIfNull(value); }
}
public Type ViewDataType {
get {
if (viewDataType == null) {
viewDataType = GetViewDataType();
}
return viewDataType;
}
}
Type GetViewDataType()
{
Assembly assembly = LoadAssemblyFrom(ViewDataTypeAssemblyLocation);
return assembly.GetType(ViewDataTypeName);
}
protected virtual Assembly LoadAssemblyFrom(string fileName)
{
return Assembly.LoadFrom(fileName);
}
public string ControllerName {
get { return controllerName.Name; }
set { controllerName.Name = value; }

3
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileGenerator.cs

@ -27,12 +27,14 @@ namespace ICSharpCode.AspNet.Mvc @@ -27,12 +27,14 @@ namespace ICSharpCode.AspNet.Mvc
this.textTemplateRepository = textTemplateRepository;
ModelClassName = String.Empty;
ModelClassAssemblyLocation = String.Empty;
MasterPageFile = String.Empty;
PrimaryContentPlaceHolderId = String.Empty;
Template = new MvcViewTextTemplate();
}
public string ModelClassName { get; set; }
public string ModelClassAssemblyLocation { get; set; }
public bool IsContentPage { get; set; }
public string MasterPageFile { get; set; }
public string PrimaryContentPlaceHolderId { get; set; }
@ -49,6 +51,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -49,6 +51,7 @@ namespace ICSharpCode.AspNet.Mvc
host.MasterPageFile = MasterPageFile;
host.PrimaryContentPlaceHolderID = PrimaryContentPlaceHolderId;
host.ViewDataTypeName = ModelClassName;
host.ViewDataTypeAssemblyLocation = ModelClassAssemblyLocation;
var viewFileName = fileName as MvcViewFileName;
host.IsPartialView = viewFileName.IsPartialView;

2
src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj

@ -76,7 +76,9 @@ @@ -76,7 +76,9 @@
<Compile Include="Helpers\MvcViewTextTemplateCollectionAssert.cs" />
<Compile Include="Helpers\TestableAddMvcControllerToProjectCommand.cs" />
<Compile Include="Helpers\TestableAddMvcViewToProjectCommand.cs" />
<Compile Include="Helpers\TestableMvcTextTemplateHost.cs" />
<Compile Include="Helpers\TestableProject.cs" />
<Compile Include="Helpers\TestableProjectContent.cs" />
<Compile Include="Helpers\TestableSelectedMvcViewFolder.cs" />
<Compile Include="Src\AddMvcControllerToProjectCommandTests.cs" />
<Compile Include="Src\AddMvcControllerToProjectViewModelTests.cs" />

11
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeClass.cs

@ -8,9 +8,18 @@ namespace AspNet.Mvc.Tests.Helpers @@ -8,9 +8,18 @@ namespace AspNet.Mvc.Tests.Helpers
{
public class FakeClass : DefaultClass
{
public TestableProject TestableProject;
public FakeClass(string name)
: base(new DefaultCompilationUnit(new DefaultProjectContent()), name)
: this(name, new TestableProjectContent())
{
}
public FakeClass(string name, TestableProjectContent projectContent)
: base(new DefaultCompilationUnit(projectContent), name)
{
this.TestableProject = projectContent.TestableProject;
}
public FakeClass AddBaseClass(string name)

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcClass.cs

@ -23,5 +23,6 @@ namespace AspNet.Mvc.Tests.Helpers @@ -23,5 +23,6 @@ namespace AspNet.Mvc.Tests.Helpers
public string Name { get; set; }
public string Namespace { get; set; }
public string BaseClassFullName { get; set; }
public string AssemblyLocation { get; set; }
}
}

7
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs

@ -17,6 +17,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -17,6 +17,7 @@ namespace AspNet.Mvc.Tests.Helpers
}
public string RootNamespace { get; set; }
public string OutputAssemblyFullPath { get; set; }
public bool SaveCalled;
@ -44,16 +45,18 @@ namespace AspNet.Mvc.Tests.Helpers @@ -44,16 +45,18 @@ namespace AspNet.Mvc.Tests.Helpers
public List<FakeMvcClass> ModelClasses = new List<FakeMvcClass>();
public void AddModelClassToProject(string @namespace, string name)
public FakeMvcClass AddModelClassToProject(string @namespace, string name)
{
var fakeClass = new FakeMvcClass(@namespace, name);
ModelClasses.Add(fakeClass);
return fakeClass;
}
public void AddModelClassToProject(string fullyQualifiedName)
public FakeMvcClass AddModelClassToProject(string fullyQualifiedName)
{
var fakeClass = new FakeMvcClass(fullyQualifiedName);
ModelClasses.Add(fakeClass);
return fakeClass;
}
public int GetModelClassesCallCount;

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcTextTemplateHost.cs

@ -39,6 +39,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -39,6 +39,7 @@ namespace AspNet.Mvc.Tests.Helpers
public bool AddActionMethods { get; set; }
public bool IsPartialView { get; set; }
public string ViewDataTypeName { get; set; }
public string ViewDataTypeAssemblyLocation { get; set; }
public bool IsContentPage { get; set; }
public string MasterPageFile { get; set; }
public string PrimaryContentPlaceHolderID { get; set; }

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcViewFileGenerator.cs

@ -11,6 +11,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -11,6 +11,7 @@ namespace AspNet.Mvc.Tests.Helpers
{
public IMvcProject Project { get; set; }
public string ModelClassName { get; set; }
public string ModelClassAssemblyLocation { get; set; }
public bool IsContentPage { get; set; }
public string MasterPageFile { get; set; }
public string PrimaryContentPlaceHolderId { get; set; }

26
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableMvcTextTemplateHost.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Reflection;
using ICSharpCode.AspNet.Mvc;
namespace AspNet.Mvc.Tests.Helpers
{
public class TestableMvcTextTemplateHost : MvcTextTemplateHost
{
public TestableMvcTextTemplateHost()
: base(null, null, null)
{
}
public Assembly AssemblyToReturnFromLoadAssemblyFrom;
public string FileNamePassedToLoadAssemblyFrom;
protected override Assembly LoadAssemblyFrom(string fileName)
{
FileNamePassedToLoadAssemblyFrom = fileName;
return AssemblyToReturnFromLoadAssemblyFrom;
}
}
}

10
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs

@ -12,6 +12,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -12,6 +12,7 @@ namespace AspNet.Mvc.Tests.Helpers
public class TestableProject : CompilableProject
{
string language = "C#";
string outputAssemblyFullPath = String.Empty;
public TestableProject(ProjectCreateInformation createInfo)
: base(createInfo)
@ -63,5 +64,14 @@ namespace AspNet.Mvc.Tests.Helpers @@ -63,5 +64,14 @@ namespace AspNet.Mvc.Tests.Helpers
ProjectService.AddProjectItem(this, projectItem);
return projectItem;
}
public override string OutputAssemblyFullPath {
get { return outputAssemblyFullPath; }
}
public void SetOutputAssemblyFullPath(string path)
{
outputAssemblyFullPath = path;
}
}
}

17
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProjectContent.cs

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace AspNet.Mvc.Tests.Helpers
{
public class TestableProjectContent : DefaultProjectContent
{
public TestableProject TestableProject = TestableProject.CreateProject();
public override object Project {
get { return TestableProject; }
}
}
}

41
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs

@ -96,14 +96,14 @@ namespace AspNet.Mvc.Tests @@ -96,14 +96,14 @@ namespace AspNet.Mvc.Tests
viewModel.SelectedViewEngine = GetViewEngineFromViewModel("Razor");
}
void AddModelClassToProject(string ns, string name)
FakeMvcClass AddModelClassToProject(string ns, string name)
{
fakeProject.AddModelClassToProject(ns, name);
return fakeProject.AddModelClassToProject(ns, name);
}
void AddModelClassToProject(string fullyQualifiedClassName)
FakeMvcClass AddModelClassToProject(string fullyQualifiedClassName)
{
fakeProject.AddModelClassToProject(fullyQualifiedClassName);
return fakeProject.AddModelClassToProject(fullyQualifiedClassName);
}
[Test]
@ -1388,5 +1388,38 @@ namespace AspNet.Mvc.Tests @@ -1388,5 +1388,38 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(emptyTemplate, template);
}
[Test]
public void AddMvcView_ModelClassSelected_ModelClassAssemblyLocationIsSetInGenerator()
{
CreateViewModel();
CSharpProjectSelected();
FakeMvcClass fakeClass = AddModelClassToProject("ICSharpCode.MyProject.MyModel");
fakeClass.AssemblyLocation = @"d:\projects\MyProject\bin\MyProject.dll";
viewModel.IsStronglyTypedView = true;
viewModel.SelectedModelClass = viewModel.ModelClasses.First();
viewModel.AddMvcView();
string assemblyLocation = fakeViewGenerator.ModelClassAssemblyLocation;
Assert.AreEqual(@"d:\projects\MyProject\bin\MyProject.dll", assemblyLocation);
}
[Test]
public void AddMvcView_ModelClassSelectedAndThenIsStrongTypedViewIsSetToFalse_ModelClassAssemblyLocationIsNotSetInGenerator()
{
CreateViewModel();
CSharpProjectSelected();
FakeMvcClass fakeClass = AddModelClassToProject("ICSharpCode.MyProject.MyModel");
fakeClass.AssemblyLocation = @"d:\projects\MyProject\bin\MyProject.dll";
viewModel.IsStronglyTypedView = true;
viewModel.SelectedModelClass = viewModel.ModelClasses.First();
viewModel.IsStronglyTypedView = false;
viewModel.AddMvcView();
string assemblyLocation = fakeViewGenerator.ModelClassAssemblyLocation;
Assert.AreEqual(String.Empty, assemblyLocation);
}
}
}

12
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcClassTests.cs

@ -71,5 +71,17 @@ namespace AspNet.Mvc.Tests @@ -71,5 +71,17 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual("ICSharpCode.BaseClass", name);
}
[Test]
public void AssemblyLocation_ProjectHasOutputAssemblyPath_ReturnsProjectOutputAssemblyPath()
{
CreateClass("ICSharpCode.TestClass");
string expectedOutputAssemblyLocation = @"d:\test\bin\debug\test.dll";
fakeClass.TestableProject.SetOutputAssemblyFullPath(expectedOutputAssemblyLocation);
string assemblyLocation = mvcClass.AssemblyLocation;
Assert.AreEqual(expectedOutputAssemblyLocation, assemblyLocation);
}
}
}

9
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassViewModelTests.cs

@ -61,5 +61,14 @@ namespace AspNet.Mvc.Tests @@ -61,5 +61,14 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual("MyClass", text);
}
[Test]
public void AssemblyLocation_ClassHasAssemblyLocation_ReturnsClassAssemblyLocation()
{
CreateViewModel("Test.MyClass");
fakeClass.AssemblyLocation = "TestAssemblyLocation";
Assert.AreEqual("TestAssemblyLocation", viewModel.AssemblyLocation);
}
}
}

12
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs

@ -256,5 +256,17 @@ namespace AspNet.Mvc.Tests @@ -256,5 +256,17 @@ namespace AspNet.Mvc.Tests
MvcProjectFileAssert.AreEqual(expectedFileName, fileName);
}
[Test]
public void OutputAssemblyFullPath_ProjectOutputAssemblyIsSet_ReturnsProjectOutputAssemblyFullPath()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
string expectedAssemblyPath = @"d:\projects\AspNetMvcProject\bin\MyProject.dll";
testableProject.SetOutputAssemblyFullPath(expectedAssemblyPath);
string assemblyPath = project.OutputAssemblyFullPath;
Assert.AreEqual(expectedAssemblyPath, assemblyPath);
}
}
}

60
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateHostTests.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc;
using NUnit.Framework;
@ -10,11 +11,11 @@ namespace AspNet.Mvc.Tests @@ -10,11 +11,11 @@ namespace AspNet.Mvc.Tests
[TestFixture]
public class MvcTextTemplateHostTests
{
MvcTextTemplateHost host;
TestableMvcTextTemplateHost host;
void CreateHost()
{
host = new MvcTextTemplateHost(null, null, null);
host = new TestableMvcTextTemplateHost();
}
[Test]
@ -97,6 +98,16 @@ namespace AspNet.Mvc.Tests @@ -97,6 +98,16 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, typeName);
}
[Test]
public void ViewDataTypeAssemblyLocation_SetToNull_ReturnsEmptyString()
{
CreateHost();
host.ViewDataTypeAssemblyLocation = null;
string location = host.ViewDataTypeAssemblyLocation;
Assert.AreEqual(String.Empty, location);
}
[Test]
public void MasterPageFile_SetToNull_ReturnsEmptyString()
{
@ -116,5 +127,50 @@ namespace AspNet.Mvc.Tests @@ -116,5 +127,50 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, id);
}
[Test]
public void ViewDataType_ViewDataTypeAssemblyLocationIsSet_ViewDataTypeAssemblyLocationUsedToLoadAssembly()
{
CreateHost();
host.AssemblyToReturnFromLoadAssemblyFrom = typeof(String).Assembly;
string expectedFileName = @"d:\test\bin\test.dll";
host.ViewDataTypeAssemblyLocation = expectedFileName;
host.ViewDataTypeName = "System.String";
Type type = host.ViewDataType;
string fileName = host.FileNamePassedToLoadAssemblyFrom;
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void ViewDataType_ViewDataTypeNameIsSystemString_StringTypeReturned()
{
CreateHost();
host.AssemblyToReturnFromLoadAssemblyFrom = typeof(String).Assembly;
host.ViewDataTypeName = "System.String";
Type type = host.ViewDataType;
Assert.AreEqual("System.String", type.FullName);
}
[Test]
public void ViewDataType_CalledTwice_AssemblyLoadedOnlyOnce()
{
CreateHost();
host.AssemblyToReturnFromLoadAssemblyFrom = typeof(String).Assembly;
host.ViewDataTypeName = "System.String";
host.ViewDataTypeAssemblyLocation = @"d:\test\bin\test.dll";
Type type = host.ViewDataType;
host.FileNamePassedToLoadAssemblyFrom = null;
type = host.ViewDataType;
Assert.IsNull(host.FileNamePassedToLoadAssemblyFrom);
}
}
}

22
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileGeneratorTests.cs

@ -293,5 +293,27 @@ namespace AspNet.Mvc.Tests @@ -293,5 +293,27 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(expectedAppDomain, appDomain);
}
[Test]
public void GenerateFile_ModelClassAssemblyLocationIsSet_MvcTextTemplateHostHasViewDataTypeAssemblyLocationSetToModelClassAssemblyLocation()
{
CreateGenerator();
ProjectPassedToGeneratorIsCSharpProject();
generator.ModelClassAssemblyLocation = @"d:\projects\MyProject\bin\debug\MyProject.dll";
GenerateFile();
string assemblyLocation = fakeHost.ViewDataTypeAssemblyLocation;
Assert.AreEqual(@"d:\projects\MyProject\bin\debug\MyProject.dll", assemblyLocation);
}
[Test]
public void ModelClassAssemblyLocation_DefaultValue_ReturnsEmptyString()
{
CreateGenerator();
string assemblyLocation = generator.ModelClassAssemblyLocation;
Assert.AreEqual(String.Empty, assemblyLocation);
}
}
}

Loading…
Cancel
Save