From 8b891da4cdd96b20da32d04c8acd5108081d77ea Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Tue, 20 Sep 2011 19:49:41 +0100 Subject: [PATCH] Select empty view template when model class name typed in does not match any model class. --- .../Src/AddMvcViewToProjectViewModel.cs | 5 +++- .../Src/AddMvcViewToProjectViewModelTests.cs | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs index 87961147cd..84b32e3606 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs @@ -24,7 +24,7 @@ namespace ICSharpCode.AspNet.Mvc bool isSelectMasterPageViewOpen; MvcProjectFile selectedMasterPage; string masterPageFile = String.Empty; - List viewTemplates; + List viewTemplates = new List(); MvcViewTextTemplate selectedViewTemplate; MvcModelClassViewModelsForSelectedFolder modelClassesForSelectedFolder; MvcModelClassViewModel selectedModelClass; @@ -317,6 +317,9 @@ namespace ICSharpCode.AspNet.Mvc get { return selectedModelClass; } set { selectedModelClass = value; + if (selectedModelClass == null) { + SelectDefaultViewTemplate(); + } OnPropertyChanged(viewModel => viewModel.SelectedModelClass); OnPropertyChanged(viewModel => viewModel.IsViewTemplateEnabled); } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs index e32018e31e..5d9c1ed440 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs @@ -1363,5 +1363,30 @@ namespace AspNet.Mvc.Tests Assert.AreEqual(expectedModelClass, selectedModelClass); } + + [Test] + public void ViewTemplates_NonEmptyViewTemplateSelectedWhenUserTypesInModelClassName_EmptyViewTemplateSelected() + { + fakeTextTemplateRepository = new FakeMvcTextTemplateRepository(); + + var templateB = new MvcViewTextTemplate(@"d:\templates\B.tt"); + fakeTextTemplateRepository.ViewTextTemplates.Add(templateB); + + var emptyTemplate = new MvcViewTextTemplate(@"d:\templates\Empty.tt"); + fakeTextTemplateRepository.ViewTextTemplates.Add(emptyTemplate); + + CreateViewModelWithViewFolderPath(@"d:\myproject\views", fakeTextTemplateRepository); + AddModelClassToProject("ICSharpCode.MyProject", "MyModel"); + + viewModel.IsStronglyTypedView = true; + MvcModelClassViewModel expectedModelClass = viewModel.ModelClasses.First(); + viewModel.SelectedModelClass = expectedModelClass; + viewModel.SelectedViewTemplate = templateB; + viewModel.ModelClassName = "test"; + + MvcViewTextTemplate template = viewModel.SelectedViewTemplate; + + Assert.AreEqual(emptyTemplate, template); + } } }