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

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

@ -11,5 +11,6 @@ namespace ICSharpCode.AspNet.Mvc
string Name { get; } string Name { get; }
string Namespace { get; } string Namespace { get; }
string BaseClassFullName { 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
{ {
IProject Project { get; } IProject Project { get; }
string RootNamespace { get; } string RootNamespace { get; }
string OutputAssemblyFullPath { get; }
void Save(); void Save();
MvcTextTemplateLanguage GetTemplateLanguage(); MvcTextTemplateLanguage GetTemplateLanguage();

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

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

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

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

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

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc namespace ICSharpCode.AspNet.Mvc
{ {
@ -39,5 +40,20 @@ namespace ICSharpCode.AspNet.Mvc
} }
return String.Empty; 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
public string FullName { public string FullName {
get { return mvcClass.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
get { return Project.RootNamespace; } get { return Project.RootNamespace; }
} }
public string OutputAssemblyFullPath {
get { return Project.OutputAssemblyFullPath; }
}
public void Save() public void Save()
{ {
Project.Save(); Project.Save();

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

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Reflection;
using ICSharpCode.TextTemplating; using ICSharpCode.TextTemplating;
namespace ICSharpCode.AspNet.Mvc namespace ICSharpCode.AspNet.Mvc
@ -10,6 +11,8 @@ namespace ICSharpCode.AspNet.Mvc
{ {
string viewName = String.Empty; string viewName = String.Empty;
string viewDataTypeName = String.Empty; string viewDataTypeName = String.Empty;
string viewDataTypeAssemblyLocation = String.Empty;
Type viewDataType;
string @namespace = String.Empty; string @namespace = String.Empty;
string masterPageFile = String.Empty; string masterPageFile = String.Empty;
string primaryContentPlaceHolderID = String.Empty; string primaryContentPlaceHolderID = String.Empty;
@ -54,6 +57,31 @@ namespace ICSharpCode.AspNet.Mvc
set { viewDataTypeName = UseEmptyStringIfNull(value); } 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 { public string ControllerName {
get { return controllerName.Name; } get { return controllerName.Name; }
set { controllerName.Name = value; } set { controllerName.Name = value; }

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

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

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

@ -76,7 +76,9 @@
<Compile Include="Helpers\MvcViewTextTemplateCollectionAssert.cs" /> <Compile Include="Helpers\MvcViewTextTemplateCollectionAssert.cs" />
<Compile Include="Helpers\TestableAddMvcControllerToProjectCommand.cs" /> <Compile Include="Helpers\TestableAddMvcControllerToProjectCommand.cs" />
<Compile Include="Helpers\TestableAddMvcViewToProjectCommand.cs" /> <Compile Include="Helpers\TestableAddMvcViewToProjectCommand.cs" />
<Compile Include="Helpers\TestableMvcTextTemplateHost.cs" />
<Compile Include="Helpers\TestableProject.cs" /> <Compile Include="Helpers\TestableProject.cs" />
<Compile Include="Helpers\TestableProjectContent.cs" />
<Compile Include="Helpers\TestableSelectedMvcViewFolder.cs" /> <Compile Include="Helpers\TestableSelectedMvcViewFolder.cs" />
<Compile Include="Src\AddMvcControllerToProjectCommandTests.cs" /> <Compile Include="Src\AddMvcControllerToProjectCommandTests.cs" />
<Compile Include="Src\AddMvcControllerToProjectViewModelTests.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
{ {
public class FakeClass : DefaultClass public class FakeClass : DefaultClass
{ {
public TestableProject TestableProject;
public FakeClass(string name) 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) public FakeClass AddBaseClass(string name)

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

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

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

@ -39,6 +39,7 @@ namespace AspNet.Mvc.Tests.Helpers
public bool AddActionMethods { get; set; } public bool AddActionMethods { get; set; }
public bool IsPartialView { get; set; } public bool IsPartialView { get; set; }
public string ViewDataTypeName { get; set; } public string ViewDataTypeName { get; set; }
public string ViewDataTypeAssemblyLocation { get; set; }
public bool IsContentPage { get; set; } public bool IsContentPage { get; set; }
public string MasterPageFile { get; set; } public string MasterPageFile { get; set; }
public string PrimaryContentPlaceHolderID { 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
{ {
public IMvcProject Project { get; set; } public IMvcProject Project { get; set; }
public string ModelClassName { get; set; } public string ModelClassName { get; set; }
public string ModelClassAssemblyLocation { get; set; }
public bool IsContentPage { get; set; } public bool IsContentPage { get; set; }
public string MasterPageFile { get; set; } public string MasterPageFile { get; set; }
public string PrimaryContentPlaceHolderId { get; set; } public string PrimaryContentPlaceHolderId { get; set; }

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

@ -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
public class TestableProject : CompilableProject public class TestableProject : CompilableProject
{ {
string language = "C#"; string language = "C#";
string outputAssemblyFullPath = String.Empty;
public TestableProject(ProjectCreateInformation createInfo) public TestableProject(ProjectCreateInformation createInfo)
: base(createInfo) : base(createInfo)
@ -63,5 +64,14 @@ namespace AspNet.Mvc.Tests.Helpers
ProjectService.AddProjectItem(this, projectItem); ProjectService.AddProjectItem(this, projectItem);
return 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 @@
// 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
viewModel.SelectedViewEngine = GetViewEngineFromViewModel("Razor"); 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] [Test]
@ -1388,5 +1388,38 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(emptyTemplate, template); 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
Assert.AreEqual("ICSharpCode.BaseClass", name); 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
Assert.AreEqual("MyClass", text); 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
MvcProjectFileAssert.AreEqual(expectedFileName, fileName); 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 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc; using ICSharpCode.AspNet.Mvc;
using NUnit.Framework; using NUnit.Framework;
@ -10,11 +11,11 @@ namespace AspNet.Mvc.Tests
[TestFixture] [TestFixture]
public class MvcTextTemplateHostTests public class MvcTextTemplateHostTests
{ {
MvcTextTemplateHost host; TestableMvcTextTemplateHost host;
void CreateHost() void CreateHost()
{ {
host = new MvcTextTemplateHost(null, null, null); host = new TestableMvcTextTemplateHost();
} }
[Test] [Test]
@ -97,6 +98,16 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, typeName); 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] [Test]
public void MasterPageFile_SetToNull_ReturnsEmptyString() public void MasterPageFile_SetToNull_ReturnsEmptyString()
{ {
@ -116,5 +127,50 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, id); 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
Assert.AreEqual(expectedAppDomain, appDomain); 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