You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.9 KiB
135 lines
3.9 KiB
// 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 AspNet.Mvc.Tests.Helpers; |
|
using ICSharpCode.AspNet.Mvc; |
|
using ICSharpCode.SharpDevelop.Project; |
|
using NUnit.Framework; |
|
|
|
namespace AspNet.Mvc.Tests |
|
{ |
|
[TestFixture] |
|
public class MvcViewFileGeneratorTests |
|
{ |
|
MvcViewFileGenerator generator; |
|
TestableProject projectUsedByGenerator; |
|
MvcTextTemplateRepository templateRepository; |
|
FakeMvcTextTemplateHostFactory fakeHostFactory; |
|
FakeMvcTextTemplateHost fakeHost; |
|
|
|
void CreateTemplateRepository(string templateRootDirectory) |
|
{ |
|
templateRepository = new MvcTextTemplateRepository(templateRootDirectory); |
|
} |
|
|
|
void CreateGenerator() |
|
{ |
|
CreateTemplateRepository(@"d:\sd\addins\AspNet.Mvc"); |
|
CreateGenerator(templateRepository); |
|
} |
|
|
|
void CreateGenerator(MvcTextTemplateRepository templateRepository) |
|
{ |
|
fakeHostFactory = new FakeMvcTextTemplateHostFactory(); |
|
fakeHost = fakeHostFactory.FakeMvcTextTemplateHost; |
|
generator = new MvcViewFileGenerator(fakeHostFactory, templateRepository); |
|
projectUsedByGenerator = TestableProject.CreateProject(); |
|
generator.Project = projectUsedByGenerator; |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
} |
|
|
|
void ProjectPassedToGeneratorIsCSharpProject() |
|
{ |
|
projectUsedByGenerator.SetLanguage("C#"); |
|
generator.Language = MvcTextTemplateLanguage.CSharp; |
|
} |
|
|
|
void GenerateFile() |
|
{ |
|
GenerateFile(@"d:\projects\myproject\Views\Home", "Index"); |
|
} |
|
|
|
void GenerateFile(string folder, string name) |
|
{ |
|
var fileName = new MvcViewFileName(); |
|
fileName.Folder = folder; |
|
fileName.ViewName = name; |
|
GenerateFile(fileName); |
|
} |
|
|
|
void GenerateFile(MvcViewFileName fileName) |
|
{ |
|
generator.GenerateFile(fileName); |
|
} |
|
|
|
[Test] |
|
public void GenerateFile_CSharpEmptyViewTemplate_MvcTextTemplateHostIsCreated() |
|
{ |
|
CreateGenerator(); |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
GenerateFile(); |
|
IProject project = fakeHostFactory.ProjectPassedToCreateMvcTextTemplateHost; |
|
|
|
Assert.AreEqual(projectUsedByGenerator, project); |
|
} |
|
|
|
[Test] |
|
public void GenerateFile_CSharpEmptyViewTemplate_MvcTextTemplateHostIsDisposed() |
|
{ |
|
CreateGenerator(); |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
GenerateFile(); |
|
bool disposed = fakeHost.IsDisposed; |
|
|
|
Assert.IsTrue(disposed); |
|
} |
|
|
|
[Test] |
|
public void GenerateFile_CSharpEmptyViewTemplate_OutputFileGeneratedUsingFileNamePassedToGenerator() |
|
{ |
|
CreateGenerator(); |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
|
|
string viewFolder = @"d:\projects\MyProject\Views\Home"; |
|
string viewName = "Index"; |
|
GenerateFile(viewFolder, viewName); |
|
|
|
string outputFileGenerated = fakeHost.OutputFilePassedToProcessTemplate; |
|
string expectedOutputFileGenerated = |
|
@"d:\projects\MyProject\Views\Home\Index.aspx"; |
|
|
|
Assert.AreEqual(expectedOutputFileGenerated, outputFileGenerated); |
|
} |
|
|
|
[Test] |
|
public void GenerateFile_CSharpEmptyViewTemplate_TemplateFileUsedIsIsCSharpEmptyViewTemplate() |
|
{ |
|
string templateRootDirectory = @"d:\SharpDev\AddIns\AspNet.Mvc"; |
|
CreateTemplateRepository(templateRootDirectory); |
|
CreateGenerator(templateRepository); |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
|
|
GenerateFile(); |
|
|
|
string inputFileName = fakeHost.InputFilePassedToProcessTemplate; |
|
string expectedInputFileName = |
|
@"d:\SharpDev\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Empty.tt"; |
|
|
|
Assert.AreEqual(expectedInputFileName, inputFileName); |
|
} |
|
|
|
[Test] |
|
public void GenerateFile_CSharpEmptyViewTemplate_MvcTextTemplateHostViewNameIsSet() |
|
{ |
|
CreateGenerator(); |
|
ProjectPassedToGeneratorIsCSharpProject(); |
|
|
|
string viewFolder = @"d:\projects\MyProject\Views\Home"; |
|
string viewName = "About"; |
|
GenerateFile(viewFolder, viewName); |
|
|
|
Assert.AreEqual("About", fakeHost.ViewName); |
|
} |
|
} |
|
}
|
|
|