Browse Source

MVC controller generator is now passed the text template filename instead of generating the filename itself.

pull/18/head
Matt Ward 14 years ago
parent
commit
2e29335bb1
  1. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs
  2. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs
  3. 28
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs
  4. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs
  5. 42
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs
  6. 65
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs

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

@ -47,7 +47,6 @@ namespace ICSharpCode.AspNet.Mvc @@ -47,7 +47,6 @@ namespace ICSharpCode.AspNet.Mvc
{
MvcTextTemplateLanguage language = GetTemplateLanguage();
controllerFileName.Language = language;
controllerGenerator.TemplateLanguage = language;
}
MvcTextTemplateLanguage GetTemplateLanguage()
@ -120,7 +119,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -120,7 +119,7 @@ namespace ICSharpCode.AspNet.Mvc
void ConfigureMvcControllerGenerator()
{
controllerGenerator.AddActionMethods = SelectedControllerTemplate.AddActionMethods;
controllerGenerator.Template = SelectedControllerTemplate;
controllerGenerator.Project = selectedControllerFolder.Project;
}

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

@ -8,9 +8,8 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,9 +8,8 @@ namespace ICSharpCode.AspNet.Mvc
{
public interface IMvcControllerFileGenerator
{
MvcTextTemplateLanguage TemplateLanguage { get; set; }
IMvcProject Project { get; set; }
bool AddActionMethods { get; set; }
MvcControllerTextTemplate Template { get; set; }
void GenerateFile(MvcControllerFileName fileName);
}

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

@ -8,24 +8,18 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,24 +8,18 @@ namespace ICSharpCode.AspNet.Mvc
{
public class MvcControllerFileGenerator : MvcFileGenerator, IMvcControllerFileGenerator
{
MvcTextTemplateRepository textTemplateRepository;
public MvcControllerFileGenerator()
: this(
new MvcTextTemplateHostFactory(),
new MvcTextTemplateRepository())
: this(new MvcTextTemplateHostFactory())
{
}
public MvcControllerFileGenerator(
IMvcTextTemplateHostFactory hostFactory,
MvcTextTemplateRepository textTemplateRepository)
public MvcControllerFileGenerator(IMvcTextTemplateHostFactory hostFactory)
: base(hostFactory)
{
this.textTemplateRepository = textTemplateRepository;
this.Template = new MvcControllerTextTemplate();
}
public bool AddActionMethods { get; set; }
public MvcControllerTextTemplate Template { get; set; }
public void GenerateFile(MvcControllerFileName fileName)
{
@ -36,7 +30,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -36,7 +30,7 @@ namespace ICSharpCode.AspNet.Mvc
{
var controllerFileName = fileName as MvcControllerFileName;
host.ControllerName = controllerFileName.ControllerName;
host.AddActionMethods = AddActionMethods;
host.AddActionMethods = Template.AddActionMethods;
host.Namespace = GetNamespace();
}
@ -47,17 +41,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -47,17 +41,7 @@ namespace ICSharpCode.AspNet.Mvc
protected override string GetTextTemplateFileName()
{
MvcTextTemplateCriteria templateCriteria = GetTextTemplateCriteria();
return textTemplateRepository.GetMvcControllerTextTemplateFileName(templateCriteria);
}
MvcTextTemplateCriteria GetTextTemplateCriteria()
{
return new MvcTextTemplateCriteria() {
TemplateLanguage = TemplateLanguage,
TemplateName = "Controller",
TemplateType = MvcTextTemplateType.Aspx
};
return Template.FileName;
}
}
}

3
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs

@ -9,9 +9,8 @@ namespace AspNet.Mvc.Tests.Helpers @@ -9,9 +9,8 @@ namespace AspNet.Mvc.Tests.Helpers
{
public class FakeMvcControllerFileGenerator : IMvcControllerFileGenerator
{
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public IMvcProject Project { get; set; }
public bool AddActionMethods { get; set; }
public MvcControllerTextTemplate Template { get; set; }
public bool IsGenerateFileCalled;
public MvcControllerFileName FileNamePassedToGenerateController;

42
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs

@ -109,29 +109,6 @@ namespace AspNet.Mvc.Tests @@ -109,29 +109,6 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void AddMvcController_SelectedControllerFolderIsInVisualBasicProject_VisualBasicMvcControllerFileGenerated()
{
CreateViewModelWithVisualBasicProject();
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
viewModel.AddMvcController();
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.VisualBasic, templateLanguage);
}
[Test]
public void AddMvcController_SelectedControllerFolderIsInCSharpProject_CSharpMvcControllerFileGenerated()
{
CreateViewModelWithCSharpProject();
viewModel.AddMvcController();
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.CSharp, templateLanguage);
}
[Test]
public void AddMvcController_SelectedControllerFolderIsInVisualBasicProject_VisualBasicProjectIsPassedToMvcControllerGenerator()
{
@ -259,25 +236,16 @@ namespace AspNet.Mvc.Tests @@ -259,25 +236,16 @@ namespace AspNet.Mvc.Tests
}
[Test]
public void AddMvcController_EmptyReadWriteTemplateSelected_AddActionMethodsSetToTrueOnFileGenerator()
{
CreateViewModelWithCSharpProject();
SelectEmptyReadWriteControllerTemplate();
fakeControllerGenerator.AddActionMethods = false;
viewModel.AddMvcController();
Assert.IsTrue(fakeControllerGenerator.AddActionMethods);
}
[Test]
public void AddMvcController_EmptyTemplateSelected_AddActionMethodsSetToFalseOnFileGenerator()
public void AddMvcController_EmptyTemplateSelected_TemplatePassedToFileGenerator()
{
CreateViewModelWithCSharpProject();
SelectEmptyControllerTemplate();
fakeControllerGenerator.AddActionMethods = true;
MvcControllerTextTemplate expectedTemplate = viewModel.SelectedControllerTemplate;
viewModel.AddMvcController();
Assert.IsFalse(fakeControllerGenerator.AddActionMethods);
MvcControllerTextTemplate template = fakeControllerGenerator.Template;
Assert.AreEqual(expectedTemplate, template);
}
[Test]

65
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs

@ -14,26 +14,14 @@ namespace AspNet.Mvc.Tests @@ -14,26 +14,14 @@ namespace AspNet.Mvc.Tests
{
MvcControllerFileGenerator generator;
FakeMvcProject 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 MvcControllerFileGenerator(fakeHostFactory, templateRepository);
generator = new MvcControllerFileGenerator(fakeHostFactory);
projectUsedByGenerator = new FakeMvcProject();
generator.Project = projectUsedByGenerator;
ProjectPassedToGeneratorIsCSharpProject();
@ -69,6 +57,13 @@ namespace AspNet.Mvc.Tests @@ -69,6 +57,13 @@ namespace AspNet.Mvc.Tests
generator.GenerateFile(fileName);
}
MvcControllerTextTemplate CreateControllerTemplate(string fileName)
{
return new MvcControllerTextTemplate() {
FileName = fileName
};
}
[Test]
public void GenerateFile_CSharpControllerTemplate_MvcTextTemplateHostIsCreated()
{
@ -108,23 +103,6 @@ namespace AspNet.Mvc.Tests @@ -108,23 +103,6 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(expectedOutputFileGenerated, outputFileGenerated);
}
[Test]
public void GenerateFile_CSharpControllerTemplate_TemplateFileUsedIsIsCSharpEmptyControllerTemplate()
{
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\AddController\Controller.tt";
Assert.AreEqual(expectedInputFileName, inputFileName);
}
[Test]
public void GenerateFile_CSharpControllerTemplate_MvcTextTemplateHostControllerNameIsSet()
{
@ -155,12 +133,28 @@ namespace AspNet.Mvc.Tests @@ -155,12 +133,28 @@ namespace AspNet.Mvc.Tests
}
[Test]
public void GenerateFile_AddActionMethodsIsTrue_MvcTextTemplateHostAddActionMethodsIsTrue()
public void GenerateFile_ControllerTemplateIsSet_ControllerTemplateFileNameUsedWhenGeneratingNewFile()
{
CreateGenerator();
ProjectPassedToGeneratorIsCSharpProject();
generator.AddActionMethods = true;
string expectedFileName = @"d:\templates\controller.tt";
MvcControllerTextTemplate template = CreateControllerTemplate(expectedFileName);
generator.Template = template;
GenerateFile();
string fileName = fakeHost.InputFilePassedToProcessTemplate;
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GenerateFile_ControllerTemplateHasAddActionsSetToTrue_MvcTextTemplateHostAddActionMethodsIsTrue()
{
CreateGenerator();
ProjectPassedToGeneratorIsCSharpProject();
MvcControllerTextTemplate template = CreateControllerTemplate(@"d:\templates\controller.tt");
template.AddActionMethods = true;
generator.Template = template;
GenerateFile();
bool addActionMethods = fakeHost.AddActionMethods;
@ -169,12 +163,13 @@ namespace AspNet.Mvc.Tests @@ -169,12 +163,13 @@ namespace AspNet.Mvc.Tests
}
[Test]
public void GenerateFile_AddActionMethodsIsFalse_MvcTextTemplateHostAddActionMethodsIsFalse()
public void GenerateFile_ControllerTemplateHasAddActionsSetToFalse_MvcTextTemplateHostAddActionMethodsIsFalse()
{
CreateGenerator();
ProjectPassedToGeneratorIsCSharpProject();
generator.AddActionMethods = false;
MvcControllerTextTemplate template = CreateControllerTemplate(@"d:\templates\controller.tt");
template.AddActionMethods = false;
generator.Template = template;
GenerateFile();
bool addActionMethods = fakeHost.AddActionMethods;

Loading…
Cancel
Save