diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs index 101c46564e..2c52fa7c68 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs @@ -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 void ConfigureMvcControllerGenerator() { - controllerGenerator.AddActionMethods = SelectedControllerTemplate.AddActionMethods; + controllerGenerator.Template = SelectedControllerTemplate; controllerGenerator.Project = selectedControllerFolder.Project; } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs index 3769c4026f..e0ec5cc3f1 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs @@ -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); } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs index fd2cc99cd2..70df3dc0eb 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs @@ -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 { 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 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; } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs index 119212ffea..9262deaa24 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs @@ -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; diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs index 3ce184ea3d..468014ba01 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs @@ -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 } [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] diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs index 257adb9910..7ebdf4f845 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs @@ -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 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 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 } [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 } [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;