void CreateViewModelWithViewFolderPath(
			string path,
			FakeMvcTextTemplateRepository fakeTextTemplateRepository)
		{
			CreateViewModelWithViewFolderPath(
				path,
				fakeTextTemplateRepository,
				MvcTextTemplateLanguage.CSharp);
		}
		void CreateViewModelWithViewFolderPath(
			string path,
			FakeMvcTextTemplateRepository fakeTextTemplateRepository,
			MvcTextTemplateLanguage templateLanguage)
		{
			fakeSelectedMvcViewFolder = new FakeSelectedMvcFolder();
			fakeSelectedMvcViewFolder.Path = path;
			fakeSelectedMvcViewFolder.TemplateLanguage = templateLanguage;
			fakeProject = fakeSelectedMvcViewFolder.FakeMvcProject;
			fakeViewGenerator = new FakeMvcViewFileGenerator();
			viewModel = new AddMvcViewToProjectViewModel(
				fakeSelectedMvcViewFolder,
				fakeViewGenerator,
				fakeTextTemplateRepository);
		}
		public void ViewTemplates_CSharpProjectAndOneTemplateInRepository_ReturnsOneViewTemplate()
		{
			fakeTextTemplateRepository = new FakeMvcTextTemplateRepository();
			var expectedTemplate = new MvcViewTextTemplate(@"d:\templates\Empty.tt");
			fakeTextTemplateRepository.ViewTextTemplates.Add(expectedTemplate);
			CreateViewModelWithViewFolderPath(@"d:\myproject\views", fakeTextTemplateRepository);
			
			IEnumerable<MvcViewTextTemplate> templates = viewModel.ViewTemplates;
			
			var expectedTemplates = new MvcViewTextTemplate[] {
				expectedTemplate
			};
			
			MvcViewTextTemplateCollectionAssert.AreEqual(expectedTemplates, templates);
		}
		void CreateViewModelWithViewFolderPath(string path)
		{
			fakeTextTemplateRepository = new FakeMvcTextTemplateRepository();
			CreateViewModelWithViewFolderPath(path, fakeTextTemplateRepository);
		}
		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);
		}
		public void ViewTemplates_CSharpProjectAndTwoTemplatesInRepository_ReturnsTwoViewTemplatesSortedByName()
		{
			fakeTextTemplateRepository = new FakeMvcTextTemplateRepository();
			
			var templateB = new MvcViewTextTemplate(@"d:\templates\B.tt");
			fakeTextTemplateRepository.ViewTextTemplates.Add(templateB);
			
			var templateA = new MvcViewTextTemplate(@"d:\templates\A.tt");
			fakeTextTemplateRepository.ViewTextTemplates.Add(templateA);
			
			CreateViewModelWithViewFolderPath(@"d:\myproject\views", fakeTextTemplateRepository);
			
			IEnumerable<MvcViewTextTemplate> templates = viewModel.ViewTemplates;
			
			var expectedTemplates = new MvcViewTextTemplate[] {
				templateA,
				templateB
			};
			
			MvcViewTextTemplateCollectionAssert.AreEqual(expectedTemplates, templates);
		}
		public void ViewTemplates_VisualBasicProject_VisualBasicTemplatesRetrievedFromTemplateRepository()
		{
			fakeTextTemplateRepository = new FakeMvcTextTemplateRepository();
			var expectedTemplate = new MvcViewTextTemplate(@"d:\templates\Empty.tt");
			fakeTextTemplateRepository.ViewTextTemplates.Add(expectedTemplate);
			CreateViewModelWithViewFolderPath(
				@"d:\myproject\views",
				fakeTextTemplateRepository,
				MvcTextTemplateLanguage.VisualBasic);
			
			IEnumerable<MvcViewTextTemplate> templates = viewModel.ViewTemplates;
			MvcTextTemplateCriteria templateCriteria = fakeTextTemplateRepository.TemplateCriteriaPassedToGetMvcViewTextTemplates;
			
			Assert.AreEqual(MvcTextTemplateLanguage.VisualBasic, templateCriteria.TemplateLanguage);
		}