Browse Source

Generate Razor or ASPX view files based on selected view engine in Add MVC View dialog.

pull/18/head
Matt Ward 15 years ago
parent
commit
c30bbb4a75
  1. 17
      src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
  2. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt
  3. 17
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt
  4. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt
  5. 17
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt
  6. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectView.xaml
  7. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectViewModel.cs
  8. 50
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml
  9. 50
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
  10. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcControllerFileGenerator.cs
  11. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcViewFileGenerator.cs
  12. 27
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcAddViewTextTemplateFolder.cs
  13. 12
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileGenerator.cs
  14. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileName.cs
  15. 12
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerTextTemplateFileName.cs
  16. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileGenerator.cs
  17. 35
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateCriteria.cs
  18. 34
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateFileName.cs
  19. 36
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateFileNameExtension.cs
  20. 20
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageExtensions.cs
  21. 12
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateRepository.cs
  22. 11
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateType.cs
  23. 20
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateTypeExtensions.cs
  24. 49
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateTypeFolderName.cs
  25. 14
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileGenerator.cs
  26. 11
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileName.cs
  27. 13
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewTextTemplateFileName.cs
  28. 21
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewTypeViewModel.cs
  29. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
  30. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcControllerFileGenerator.cs
  31. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcViewFileGenerator.cs
  32. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcControllerToProjectViewModelTests.cs
  33. 157
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
  34. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcControllerFileGeneratorTests.cs
  35. 89
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateRepositoryTests.cs
  36. 36
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileGeneratorTests.cs
  37. 36
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileNameTests.cs

17
src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj

@ -71,22 +71,29 @@ @@ -71,22 +71,29 @@
<Compile Include="Src\IsMvcControllerFolderSelectedConditionEvaluator.cs" />
<Compile Include="Src\IsMvcViewFolderSelectedConditionEvaluator.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\MvcAddViewTextTemplateFolder.cs" />
<Compile Include="Src\MvcControllerFileGenerator.cs" />
<Compile Include="Src\MvcControllerFileName.cs" />
<Compile Include="Src\MvcControllerTextTemplateFileName.cs" />
<Compile Include="Src\MvcFileGenerator.cs" />
<Compile Include="Src\MvcFileName.cs" />
<Compile Include="Src\MvcFileService.cs" />
<Compile Include="Src\MvcTextTemplateCriteria.cs" />
<Compile Include="Src\MvcTextTemplateFileName.cs" />
<Compile Include="Src\MvcTextTemplateHost.cs" />
<Compile Include="Src\MvcTextTemplateHostFactory.cs" />
<Compile Include="Src\MvcTextTemplateLanguage.cs" />
<Compile Include="Src\MvcTextTemplateLanguageConverter.cs" />
<Compile Include="Src\MvcTextTemplateLanguageFileNameExtension.cs" />
<Compile Include="Src\MvcTextTemplateLanguageExtensions.cs" />
<Compile Include="Src\MvcTextTemplateFileNameExtension.cs" />
<Compile Include="Src\MvcTextTemplateRepository.cs" />
<Compile Include="Src\MvcTextTemplateType.cs" />
<Compile Include="Src\MvcTextTemplateTypeExtensions.cs" />
<Compile Include="Src\MvcTextTemplateTypeFolderName.cs" />
<Compile Include="Src\MvcViewFileName.cs" />
<Compile Include="Src\MvcViewFileGenerator.cs" />
<Compile Include="Src\MvcViewTextTemplateFileName.cs" />
<Compile Include="Src\MvcViewTypeViewModel.cs" />
<Compile Include="Src\SelectedMvcControllerFolder.cs" />
<Compile Include="Src\SelectedMvcFolder.cs" />
<Compile Include="Src\SelectedMvcViewFolder.cs" />
@ -99,11 +106,13 @@ @@ -99,11 +106,13 @@
<Folder Include="ItemTemplates\CSharp\CodeTemplates\AddView" />
<Folder Include="ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp" />
<Folder Include="ItemTemplates\CSharp\CodeTemplates\AddController" />
<Folder Include="ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML" />
<Folder Include="ItemTemplates\VisualBasic" />
<Folder Include="ItemTemplates\VisualBasic\CodeTemplates" />
<Folder Include="ItemTemplates\VisualBasic\CodeTemplates\AddView" />
<Folder Include="ItemTemplates\VisualBasic\CodeTemplates\AddView\AspxVisualBasic" />
<Folder Include="ItemTemplates\VisualBasic\CodeTemplates\AddController" />
<Folder Include="ItemTemplates\VisualBasic\CodeTemplates\AddView\VBHTML" />
<Folder Include="Resources" />
</ItemGroup>
<ItemGroup>
@ -139,6 +148,9 @@ @@ -139,6 +148,9 @@
<None Include="ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Empty.tt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Empty.tt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="ItemTemplates\VisualBasic\CodeTemplates\AddController\Controller.tt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
@ -147,6 +159,9 @@ @@ -147,6 +159,9 @@
</None>
<EmbeddedResource Include="Resources\CSharpRazor.xshd" />
<EmbeddedResource Include="Resources\VisualBasicRazor.xshd" />
<None Include="ItemTemplates\VisualBasic\CodeTemplates\AddView\VBHTML\Empty.tt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Page Include="Src\AddMvcControllerToProjectView.xaml" />

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt

@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
<title><#= mvcHost.ViewName #></title>
</head>
<body>
<div id="page">
<div>
</div>
</body>

17
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
<#@ template language="C#" HostSpecific="true" #>
<#@ output extension=".cshtml" #>
<#
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)Host;
#>
<!DOCTYPE html>
<html>
<head>
<title><#= mvcHost.ViewName #></title>
</head>
<body>
<div>
</div>
</body>
</html>

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt

@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
<title><#= mvcHost.ViewName #></title>
</head>
<body>
<div id="page">
<div>
</div>
</body>

17
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
<#@ template language="VB" HostSpecific="true" #>
<#@ output extension=".vbhtml" #>
<#
Dim mvcHost As MvcTextTemplateHost = DirectCast(Host, MvcTextTemplateHost)
#>
<!DOCTYPE html>
<html>
<head>
<title><#= mvcHost.ViewName #></title>
</head>
<body>
<div>
</div>
</body>
</html>

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcControllerToProjectView.xaml

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
xmlns:mvc="clr-namespace:ICSharpCode.AspNet.Mvc"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Add Controller"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
mvc:CloseWindowBehaviour.IsClosed="{Binding IsClosed}"
WindowStartupLocation="CenterOwner"
FocusManager.FocusedElement="{Binding ElementName=ControllerNameTextBox}"

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

@ -42,7 +42,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -42,7 +42,7 @@ namespace ICSharpCode.AspNet.Mvc
{
MvcTextTemplateLanguage language = GetTemplateLanguage();
controllerFileName.Language = language;
controllerGenerator.Language = language;
controllerGenerator.TemplateLanguage = language;
}
MvcTextTemplateLanguage GetTemplateLanguage()

50
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
xmlns:mvc="clr-namespace:ICSharpCode.AspNet.Mvc"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Add View"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
mvc:CloseWindowBehaviour.IsClosed="{Binding IsClosed}"
WindowStartupLocation="CenterOwner"
FocusManager.FocusedElement="{Binding ElementName=ViewNameTextBox}"
@ -14,36 +14,52 @@ @@ -14,36 +14,52 @@
<Window.Resources>
<Style TargetType="Button" BasedOn="{x:Static core:GlobalStyles.ButtonStyle}"/>
<DataTemplate x:Key="ViewEngineTemplate">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock
Margin="4"
FontWeight="Bold"
Text="View Name:"/>
<TextBox
x:Name="ViewNameTextBox"
Grid.Column="1"
Text="{Binding Path=ViewName, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<TextBlock
Margin="4"
Text="View Name:"/>
<TextBox
x:Name="ViewNameTextBox"
Grid.Column="1"
Margin="2"
Text="{Binding Path=ViewName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock
Grid.Row="1"
Margin="4"
Text="View Engine:"/>
<ComboBox
Margin="2"
Grid.Row="1"
Grid.Column="1"
ItemsSource="{Binding Path=ViewEngines}"
ItemTemplate="{StaticResource ViewEngineTemplate}"
SelectedItem="{Binding Path=SelectedViewEngine}"/>
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="4"
Grid.Row="2">
Grid.ColumnSpan="2"
Grid.Row="3">
<Button
Margin="2, 0"
Content="_Add"

50
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Input;
@ -14,6 +15,8 @@ namespace ICSharpCode.AspNet.Mvc @@ -14,6 +15,8 @@ namespace ICSharpCode.AspNet.Mvc
IMvcFileService fileService;
MvcViewFileName viewFileName = new MvcViewFileName();
bool closed;
List<MvcViewEngineViewModel> viewEngines;
MvcViewEngineViewModel selectedViewEngine;
public AddMvcViewToProjectViewModel(ISelectedMvcFolder selectedViewFolder)
: this(
@ -34,6 +37,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -34,6 +37,7 @@ namespace ICSharpCode.AspNet.Mvc
this.viewFileName.Folder = selectedViewFolder.Path;
CreateCommands();
AddViewEngines();
}
void CreateCommands()
@ -56,6 +60,48 @@ namespace ICSharpCode.AspNet.Mvc @@ -56,6 +60,48 @@ namespace ICSharpCode.AspNet.Mvc
}
}
void AddViewEngines()
{
viewEngines = new List<MvcViewEngineViewModel>();
AddAspxViewEngine();
AddRazorViewEngine();
SelectAspxViewEngine();
}
void AddAspxViewEngine()
{
var viewType = new MvcViewEngineViewModel("ASPX", MvcTextTemplateType.Aspx);
AddViewEngine(viewType);
}
void AddRazorViewEngine()
{
var viewType = new MvcViewEngineViewModel("Razor", MvcTextTemplateType.Razor);
AddViewEngine(viewType);
}
void AddViewEngine(MvcViewEngineViewModel viewEngine)
{
viewEngines.Add(viewEngine);
}
void SelectAspxViewEngine()
{
SelectedViewEngine = viewEngines[0];
}
public IEnumerable<MvcViewEngineViewModel> ViewEngines {
get { return viewEngines; }
}
public MvcViewEngineViewModel SelectedViewEngine {
get { return selectedViewEngine; }
set {
selectedViewEngine = value;
viewFileName.TemplateType = selectedViewEngine.TemplateType;
}
}
public bool CanAddMvcView()
{
return viewFileName.HasValidViewName();
@ -72,13 +118,15 @@ namespace ICSharpCode.AspNet.Mvc @@ -72,13 +118,15 @@ namespace ICSharpCode.AspNet.Mvc
void GenerateMvcViewFile()
{
ConfigureMvcViewGenerator();
viewFileName.TemplateLanguage = GetTemplateLanguage();
viewGenerator.GenerateFile(viewFileName);
}
void ConfigureMvcViewGenerator()
{
viewGenerator.Language = GetTemplateLanguage();
viewGenerator.Project = selectedViewFolder.Project;
viewGenerator.TemplateLanguage = GetTemplateLanguage();
viewGenerator.TemplateType = selectedViewEngine.TemplateType;
}
MvcTextTemplateLanguage GetTemplateLanguage()

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

@ -8,7 +8,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,7 +8,7 @@ namespace ICSharpCode.AspNet.Mvc
{
public interface IMvcControllerFileGenerator
{
MvcTextTemplateLanguage Language { get; set; }
MvcTextTemplateLanguage TemplateLanguage { get; set; }
IProject Project { get; set; }
void GenerateFile(MvcControllerFileName fileName);

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

@ -8,7 +8,8 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,7 +8,8 @@ namespace ICSharpCode.AspNet.Mvc
{
public interface IMvcViewFileGenerator
{
MvcTextTemplateLanguage Language { get; set; }
MvcTextTemplateLanguage TemplateLanguage { get; set; }
MvcTextTemplateType TemplateType { get; set; }
IProject Project { get; set; }
void GenerateFile(MvcViewFileName fileName);

27
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcAddViewTextTemplateFolder.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcAddViewTextTemplateFolder
{
string name;
public MvcAddViewTextTemplateFolder(MvcTextTemplateCriteria criteria)
{
name = GetFolderName(criteria);
}
string GetFolderName(MvcTextTemplateCriteria criteria)
{
var templateTypeFolder = new MvcTextTemplateTypeFolder(criteria);
return "AddView\\" + templateTypeFolder.Name;
}
public string Name {
get { return name; }
}
}
}

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

@ -44,7 +44,17 @@ namespace ICSharpCode.AspNet.Mvc @@ -44,7 +44,17 @@ namespace ICSharpCode.AspNet.Mvc
protected override string GetTextTemplateFileName()
{
return textTemplateRepository.GetMvcControllerTextTemplateFileName(Language, "Controller");
MvcTextTemplateCriteria templateCriteria = GetTextTemplateCriteria();
return textTemplateRepository.GetMvcControllerTextTemplateFileName(templateCriteria);
}
MvcTextTemplateCriteria GetTextTemplateCriteria()
{
return new MvcTextTemplateCriteria() {
TemplateLanguage = TemplateLanguage,
TemplateName = "Controller",
TemplateType = MvcTextTemplateType.Aspx
};
}
}
}

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerFileName.cs

@ -41,7 +41,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -41,7 +41,7 @@ namespace ICSharpCode.AspNet.Mvc
string GetFileExtension()
{
return MvcTextTemplateLanguageFileNameExtension.GetFileExtension(Language);
return MvcTextTemplateFileNameExtension.GetControllerFileExtension(Language);
}
public bool HasValidControllerName()

12
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerTextTemplateFileName.cs

@ -9,15 +9,15 @@ namespace ICSharpCode.AspNet.Mvc @@ -9,15 +9,15 @@ namespace ICSharpCode.AspNet.Mvc
public class MvcControllerTextTemplateFileName : MvcTextTemplateFileName
{
public MvcControllerTextTemplateFileName(
string textTemplatesRootDirectory,
MvcTextTemplateLanguage language,
string templateName)
: base(textTemplatesRootDirectory, language, templateName)
string textTemplatesRootFolder,
MvcTextTemplateCriteria templateCriteria)
: base(textTemplatesRootFolder, templateCriteria)
{
}
protected override string LanguageSubdirectoryFormatString {
get { return "{0}\\CodeTemplates\\AddController"; }
protected override string GetCodeTemplatesSubFolder()
{
return "AddController";
}
}
}

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileGenerator.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -16,7 +16,7 @@ namespace ICSharpCode.AspNet.Mvc
this.hostFactory = hostFactory;
}
public MvcTextTemplateLanguage Language { get; set; }
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public IProject Project { get; set; }
public void GenerateFile(MvcFileName fileName)

35
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateCriteria.cs

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcTextTemplateCriteria
{
public MvcTextTemplateCriteria()
{
TemplateName = String.Empty;
}
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public string TemplateName { get; set; }
public MvcTextTemplateType TemplateType { get; set; }
public bool IsRazor {
get { return TemplateType == MvcTextTemplateType.Razor; }
}
public bool IsAspx {
get { return TemplateType == MvcTextTemplateType.Aspx; }
}
public bool IsVisualBasic {
get { return TemplateLanguage.IsVisualBasic(); }
}
public bool IsCSharp {
get { return TemplateLanguage.IsCSharp(); }
}
}
}

34
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateFileName.cs

@ -8,43 +8,43 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,43 +8,43 @@ namespace ICSharpCode.AspNet.Mvc
{
public abstract class MvcTextTemplateFileName
{
string textTemplatesRootDirectory;
MvcTextTemplateLanguage language;
string templateName;
string textTemplatesRootFolder;
MvcTextTemplateCriteria templateCriteria;
public MvcTextTemplateFileName(
string textTemplatesRootDirectory,
MvcTextTemplateLanguage language,
string templateName)
string textTemplatesRootFolder,
MvcTextTemplateCriteria templateCriteria)
{
this.textTemplatesRootDirectory = textTemplatesRootDirectory;
this.language = language;
this.templateName = templateName;
this.textTemplatesRootFolder = textTemplatesRootFolder;
this.templateCriteria = templateCriteria;
}
public string GetPath()
{
string fileName = GetTemplateFileName();
string directory = GetTemplateDirectory(language);
string directory = GetTemplateFolder();
return Path.Combine(directory, fileName);
}
string GetTemplateFileName()
{
return templateName + ".tt";
return templateCriteria.TemplateName + ".tt";
}
string GetTemplateDirectory(MvcTextTemplateLanguage language)
string GetTemplateFolder()
{
string languageSubdirectory = GetLanguageSubdirectory(language);
return Path.Combine(textTemplatesRootDirectory, languageSubdirectory);
string codeTemplatesDirectory = GetCodeTemplatesFolder();
string subFolder = GetCodeTemplatesSubFolder();
return Path.Combine(codeTemplatesDirectory, subFolder);
}
string GetLanguageSubdirectory(MvcTextTemplateLanguage language)
string GetCodeTemplatesFolder()
{
return String.Format(LanguageSubdirectoryFormatString, language.ToString());
MvcTextTemplateLanguage language = templateCriteria.TemplateLanguage;
string subFolder = String.Format("{0}\\CodeTemplates", language.ToString());
return Path.Combine(textTemplatesRootFolder, subFolder);
}
protected abstract string LanguageSubdirectoryFormatString { get; }
protected abstract string GetCodeTemplatesSubFolder();
}
}

36
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateFileNameExtension.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateFileNameExtension
{
public static string GetControllerFileExtension(MvcTextTemplateLanguage language)
{
if (language.IsVisualBasic()) {
return ".vb";
}
return ".cs";
}
public static string GetViewFileExtension(
MvcTextTemplateType type,
MvcTextTemplateLanguage language)
{
if (type.IsAspx()) {
return ".aspx";
}
return GetRazorFileExtension(language);
}
public static string GetRazorFileExtension(MvcTextTemplateLanguage language)
{
if (language.IsVisualBasic()) {
return ".vbhtml";
}
return ".cshtml";
}
}
}

20
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageExtensions.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateLanguageExtensions
{
public static bool IsCSharp(this MvcTextTemplateLanguage templateLanguage)
{
return templateLanguage == MvcTextTemplateLanguage.CSharp;
}
public static bool IsVisualBasic(this MvcTextTemplateLanguage templateLanguage)
{
return templateLanguage == MvcTextTemplateLanguage.VisualBasic;
}
}
}

12
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateRepository.cs

@ -26,19 +26,15 @@ namespace ICSharpCode.AspNet.Mvc @@ -26,19 +26,15 @@ namespace ICSharpCode.AspNet.Mvc
this.textTemplatesRootDirectory = Path.Combine(mvcAddInPath, "ItemTemplates");
}
public string GetMvcViewTextTemplateFileName(
MvcTextTemplateLanguage language,
string templateName)
public string GetMvcViewTextTemplateFileName(MvcTextTemplateCriteria templateCriteria)
{
var fileName = new MvcViewTextTemplateFileName(textTemplatesRootDirectory, language, templateName);
var fileName = new MvcViewTextTemplateFileName(textTemplatesRootDirectory, templateCriteria);
return fileName.GetPath();
}
public string GetMvcControllerTextTemplateFileName(
MvcTextTemplateLanguage language,
string templateName)
public string GetMvcControllerTextTemplateFileName(MvcTextTemplateCriteria templateCriteria)
{
var fileName = new MvcControllerTextTemplateFileName(textTemplatesRootDirectory, language, templateName);
var fileName = new MvcControllerTextTemplateFileName(textTemplatesRootDirectory, templateCriteria);
return fileName.GetPath();
}
}

11
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageFileNameExtension.cs → src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateType.cs

@ -5,14 +5,9 @@ using System; @@ -5,14 +5,9 @@ using System;
namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateLanguageFileNameExtension
public enum MvcTextTemplateType
{
public static string GetFileExtension(MvcTextTemplateLanguage language)
{
if (language == MvcTextTemplateLanguage.VisualBasic) {
return ".vb";
}
return ".cs";
}
Aspx,
Razor
}
}

20
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateTypeExtensions.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateTypeExtensions
{
public static bool IsRazor(this MvcTextTemplateType templateType)
{
return templateType == MvcTextTemplateType.Razor;
}
public static bool IsAspx(this MvcTextTemplateType templateType)
{
return templateType == MvcTextTemplateType.Aspx;
}
}
}

49
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateTypeFolderName.cs

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcTextTemplateTypeFolder
{
string name;
public MvcTextTemplateTypeFolder(MvcTextTemplateCriteria criteria)
: this(criteria.TemplateType, criteria.TemplateLanguage)
{
}
public MvcTextTemplateTypeFolder(
MvcTextTemplateType type,
MvcTextTemplateLanguage language)
{
name = GetFolderName(type, language);
}
string GetFolderName(MvcTextTemplateType type, MvcTextTemplateLanguage language)
{
if (type.IsRazor()) {
return GetRazorFolderName(language);
}
return GetAspxFolderName(language);
}
string GetRazorFolderName(MvcTextTemplateLanguage language)
{
if (language.IsVisualBasic()) {
return "VBHTML";
}
return "CSHTML";
}
string GetAspxFolderName(MvcTextTemplateLanguage language)
{
return "Aspx" + language;
}
public string Name {
get { return name; }
}
}
}

14
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileGenerator.cs

@ -25,6 +25,8 @@ namespace ICSharpCode.AspNet.Mvc @@ -25,6 +25,8 @@ namespace ICSharpCode.AspNet.Mvc
this.textTemplateRepository = textTemplateRepository;
}
public MvcTextTemplateType TemplateType { get; set; }
public void GenerateFile(MvcViewFileName fileName)
{
base.GenerateFile(fileName);
@ -38,7 +40,17 @@ namespace ICSharpCode.AspNet.Mvc @@ -38,7 +40,17 @@ namespace ICSharpCode.AspNet.Mvc
protected override string GetTextTemplateFileName()
{
return textTemplateRepository.GetMvcViewTextTemplateFileName(Language, "Empty");
MvcTextTemplateCriteria templateCriteria = GetTextTemplateCriteria();
return textTemplateRepository.GetMvcViewTextTemplateFileName(templateCriteria);
}
MvcTextTemplateCriteria GetTextTemplateCriteria()
{
return new MvcTextTemplateCriteria() {
TemplateLanguage = TemplateLanguage,
TemplateName = "Empty",
TemplateType = TemplateType
};
}
}
}

11
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewFileName.cs

@ -23,10 +23,14 @@ namespace ICSharpCode.AspNet.Mvc @@ -23,10 +23,14 @@ namespace ICSharpCode.AspNet.Mvc
viewName = ConvertToEmptyStringIfNull(viewName);
}
public MvcTextTemplateType TemplateType { get; set; }
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public override string GetFileName()
{
string viewName = GetViewName();
return viewName + ".aspx";
string viewFileExtension = GetViewFileExtension();
return viewName + viewFileExtension;
}
string GetViewName()
@ -37,6 +41,11 @@ namespace ICSharpCode.AspNet.Mvc @@ -37,6 +41,11 @@ namespace ICSharpCode.AspNet.Mvc
return "View1";
}
string GetViewFileExtension()
{
return MvcTextTemplateFileNameExtension.GetViewFileExtension(TemplateType, TemplateLanguage);
}
public bool HasValidViewName()
{
return !String.IsNullOrEmpty(viewName);

13
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewTextTemplateFileName.cs

@ -8,16 +8,19 @@ namespace ICSharpCode.AspNet.Mvc @@ -8,16 +8,19 @@ namespace ICSharpCode.AspNet.Mvc
{
public class MvcViewTextTemplateFileName : MvcTextTemplateFileName
{
MvcAddViewTextTemplateFolder folder;
public MvcViewTextTemplateFileName(
string textTemplatesRootDirectory,
MvcTextTemplateLanguage language,
string templateName)
: base(textTemplatesRootDirectory, language, templateName)
MvcTextTemplateCriteria templateCriteria)
: base(textTemplatesRootDirectory, templateCriteria)
{
this.folder = new MvcAddViewTextTemplateFolder(templateCriteria);
}
protected override string LanguageSubdirectoryFormatString {
get { return "{0}\\CodeTemplates\\AddView\\Aspx{0}"; }
protected override string GetCodeTemplatesSubFolder()
{
return folder.Name;
}
}
}

21
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcViewTypeViewModel.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// 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;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcViewEngineViewModel
{
public MvcViewEngineViewModel(
string name,
MvcTextTemplateType templateType)
{
this.Name = name;
this.TemplateType = templateType;
}
public string Name { get; set; }
public MvcTextTemplateType TemplateType { get; set; }
}
}

3
src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj

@ -39,6 +39,9 @@ @@ -39,6 +39,9 @@
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>

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

@ -9,7 +9,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -9,7 +9,7 @@ namespace AspNet.Mvc.Tests.Helpers
{
public class FakeMvcControllerFileGenerator : IMvcControllerFileGenerator
{
public MvcTextTemplateLanguage Language { get; set; }
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public IProject Project { get; set; }
public bool IsGenerateFileCalled;

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

@ -9,7 +9,8 @@ namespace AspNet.Mvc.Tests.Helpers @@ -9,7 +9,8 @@ namespace AspNet.Mvc.Tests.Helpers
{
public class FakeMvcViewFileGenerator : IMvcViewFileGenerator
{
public MvcTextTemplateLanguage Language { get; set; }
public MvcTextTemplateLanguage TemplateLanguage { get; set; }
public MvcTextTemplateType TemplateType { get; set; }
public IProject Project { get; set; }
public bool IsGenerateFileCalled;

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

@ -89,7 +89,7 @@ namespace AspNet.Mvc.Tests @@ -89,7 +89,7 @@ namespace AspNet.Mvc.Tests
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
viewModel.AddMvcController();
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.Language;
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.VisualBasic, templateLanguage);
}
@ -100,7 +100,7 @@ namespace AspNet.Mvc.Tests @@ -100,7 +100,7 @@ namespace AspNet.Mvc.Tests
CreateViewModelWithCSharpProject();
viewModel.AddMvcController();
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.Language;
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.CSharp, templateLanguage);
}

157
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc;
using ICSharpCode.SharpDevelop.Project;
@ -45,6 +46,36 @@ namespace AspNet.Mvc.Tests @@ -45,6 +46,36 @@ namespace AspNet.Mvc.Tests
viewModel.PropertyChanged += (source, e) => propertyChangedEvents.Add(e.PropertyName);
}
bool ViewModelHasViewEngine(string viewTypeName)
{
return viewModel.ViewEngines.Any(v => v.Name == viewTypeName);
}
MvcViewEngineViewModel GetViewEngineFromViewModel(string viewTypeName)
{
return viewModel.ViewEngines.SingleOrDefault(v => v.Name == viewTypeName);
}
void CSharpProjectSelected()
{
fakeSelectedMvcViewFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
}
void VisualBasicProjectSelected()
{
fakeSelectedMvcViewFolder.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
}
void SelectAspxViewEngine()
{
viewModel.SelectedViewEngine = GetViewEngineFromViewModel("ASPX");
}
void SelectRazorViewEngine()
{
viewModel.SelectedViewEngine = GetViewEngineFromViewModel("Razor");
}
[Test]
public void AddMvcViewCommand_ExecutedWhenViewNameSpecified_MvcViewIsGenerated()
{
@ -78,7 +109,7 @@ namespace AspNet.Mvc.Tests @@ -78,7 +109,7 @@ namespace AspNet.Mvc.Tests
fakeSelectedMvcViewFolder.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
viewModel.AddMvcView();
MvcTextTemplateLanguage templateLanguage = fakeViewGenerator.Language;
MvcTextTemplateLanguage templateLanguage = fakeViewGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.VisualBasic, templateLanguage);
}
@ -90,7 +121,7 @@ namespace AspNet.Mvc.Tests @@ -90,7 +121,7 @@ namespace AspNet.Mvc.Tests
fakeSelectedMvcViewFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
viewModel.AddMvcView();
MvcTextTemplateLanguage templateLanguage = fakeViewGenerator.Language;
MvcTextTemplateLanguage templateLanguage = fakeViewGenerator.TemplateLanguage;
Assert.AreEqual(MvcTextTemplateLanguage.CSharp, templateLanguage);
}
@ -191,5 +222,127 @@ namespace AspNet.Mvc.Tests @@ -191,5 +222,127 @@ namespace AspNet.Mvc.Tests
Assert.IsTrue(canExecute);
}
[Test]
public void ViewEngines_RazorAndAspxViewEngines_ContainsRazorViewEngine()
{
CreateViewModel();
bool contains = ViewModelHasViewEngine("Razor");
Assert.IsTrue(contains);
}
[Test]
public void ViewTypes_RazorAndAspxViewEngines_RazorViewEngineViewModelHasRazorTemplateType()
{
CreateViewModel();
MvcViewEngineViewModel viewEngine = GetViewEngineFromViewModel("Razor");
Assert.AreEqual(MvcTextTemplateType.Razor, viewEngine.TemplateType);
}
[Test]
public void ViewEngines_RazorAndAspxViewTypes_ContainsAspxViewType()
{
CreateViewModel();
bool contains = ViewModelHasViewEngine("ASPX");
Assert.IsTrue(contains);
}
[Test]
public void ViewEngines_RazorAndAspxViewEngines_AspxViewEngineViewModelHasAspxTemplateType()
{
CreateViewModel();
MvcViewEngineViewModel viewEngine = GetViewEngineFromViewModel("ASPX");
Assert.AreEqual(MvcTextTemplateType.Aspx, viewEngine.TemplateType);
}
[Test]
public void ViewEngines_RazorAndAspxViewEngines_FirstViewEngineInListIsAspxViewEngine()
{
CreateViewModel();
MvcViewEngineViewModel viewEngine = viewModel.ViewEngines.First();
Assert.AreEqual(MvcTextTemplateType.Aspx, viewEngine.TemplateType);
}
[Test]
public void SelectedViewEngine_RazorAndAspxViewEngines_ReturnsAspxByDefault()
{
CreateViewModel();
MvcViewEngineViewModel viewEngine = viewModel.SelectedViewEngine;
Assert.AreEqual(MvcTextTemplateType.Aspx, viewEngine.TemplateType);
}
[Test]
public void AddMvcView_CSharpProjectAndRazorViewEngineIsSelected_CSharpRazorViewFileNamePassedToGenerator()
{
CreateViewModelWithViewFolderPath(@"d:\projects\MyProject\Views\Home");
viewModel.ViewName = "Index";
CSharpProjectSelected();
SelectRazorViewEngine();
viewModel.AddMvcView();
MvcViewFileName viewFileName = fakeViewGenerator.FileNamePassedToGenerateFile;
string fileName = viewFileName.GetPath();
string expectedFileName = @"d:\projects\MyProject\Views\Home\Index.cshtml";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void AddMvcView_VisualBasicProjectAndRazorViewEngineIsSelected_VisualBasicRazorViewFileNamePassedToGenerator()
{
CreateViewModelWithViewFolderPath(@"d:\projects\MyProject\Views\Home");
viewModel.ViewName = "Index";
VisualBasicProjectSelected();
SelectRazorViewEngine();
viewModel.AddMvcView();
MvcViewFileName viewFileName = fakeViewGenerator.FileNamePassedToGenerateFile;
string fileName = viewFileName.GetPath();
string expectedFileName = @"d:\projects\MyProject\Views\Home\Index.vbhtml";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void AddMvcView_RazorViewEngineIsSelected_RazorViewFileGenerated()
{
CreateViewModel();
fakeViewGenerator.TemplateType = MvcTextTemplateType.Aspx;
CSharpProjectSelected();
viewModel.ViewName = "Index";
SelectRazorViewEngine();
viewModel.AddMvcView();
MvcTextTemplateType templateType = fakeViewGenerator.TemplateType;
Assert.AreEqual(MvcTextTemplateType.Razor, templateType);
}
[Test]
public void AddMvcView_AspxViewEngineIsSelected_AspxViewFileGenerated()
{
CreateViewModel();
fakeViewGenerator.TemplateType = MvcTextTemplateType.Razor;
CSharpProjectSelected();
viewModel.ViewName = "Index";
SelectAspxViewEngine();
viewModel.AddMvcView();
MvcTextTemplateType templateType = fakeViewGenerator.TemplateType;
Assert.AreEqual(MvcTextTemplateType.Aspx, templateType);
}
}
}

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

@ -42,13 +42,13 @@ namespace AspNet.Mvc.Tests @@ -42,13 +42,13 @@ namespace AspNet.Mvc.Tests
void ProjectPassedToGeneratorIsCSharpProject()
{
projectUsedByGenerator.SetLanguage("C#");
generator.Language = MvcTextTemplateLanguage.CSharp;
generator.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
}
void ProjectPassedToGeneratorIsVisualBasicProject()
{
projectUsedByGenerator.SetLanguage("VBNet");
generator.Language = MvcTextTemplateLanguage.VisualBasic;
generator.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
}
void GenerateFile()

89
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateRepositoryTests.cs

@ -22,7 +22,13 @@ namespace AspNet.Mvc.Tests @@ -22,7 +22,13 @@ namespace AspNet.Mvc.Tests
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string fileName = repository.GetMvcViewTextTemplateFileName(MvcTextTemplateLanguage.CSharp, "Empty");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateName = "Empty",
TemplateType = MvcTextTemplateType.Aspx
};
string fileName = repository.GetMvcViewTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Empty.tt";
@ -35,7 +41,13 @@ namespace AspNet.Mvc.Tests @@ -35,7 +41,13 @@ namespace AspNet.Mvc.Tests
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string fileName = repository.GetMvcViewTextTemplateFileName(MvcTextTemplateLanguage.VisualBasic, "Empty");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.VisualBasic,
TemplateName = "Empty",
TemplateType = MvcTextTemplateType.Aspx
};
string fileName = repository.GetMvcViewTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\VisualBasic\CodeTemplates\AddView\AspxVisualBasic\Empty.tt";
@ -48,7 +60,13 @@ namespace AspNet.Mvc.Tests @@ -48,7 +60,13 @@ namespace AspNet.Mvc.Tests
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string fileName = repository.GetMvcControllerTextTemplateFileName(MvcTextTemplateLanguage.CSharp, "Controller");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateName = "Controller",
TemplateType = MvcTextTemplateType.Aspx
};
string fileName = repository.GetMvcControllerTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddController\Controller.tt";
@ -61,12 +79,75 @@ namespace AspNet.Mvc.Tests @@ -61,12 +79,75 @@ namespace AspNet.Mvc.Tests
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string fileName = repository.GetMvcControllerTextTemplateFileName(MvcTextTemplateLanguage.VisualBasic, "Controller");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.VisualBasic,
TemplateName = "Controller",
TemplateType = MvcTextTemplateType.Aspx
};
string fileName = repository.GetMvcControllerTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\VisualBasic\CodeTemplates\AddController\Controller.tt";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcViewTextTemplateFileName_CSharpEmptyRazorTemplateRequested_ReturnsFileNameToCSharpEmptyRazorTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateName = "Empty",
TemplateType = MvcTextTemplateType.Razor
};
string fileName = repository.GetMvcViewTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Empty.tt";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcViewTextTemplateFileName_VisualBasicEmptyRazorTemplateRequested_ReturnsFileNameToVisualBasicEmptyRazorTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.VisualBasic,
TemplateName = "Empty",
TemplateType = MvcTextTemplateType.Razor
};
string fileName = repository.GetMvcViewTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\VisualBasic\CodeTemplates\AddView\VBHTML\Empty.tt";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcControllerTextTemplateFileName_RazorCSharpControllerTemplateRequested_ReturnsFileNameToCSharpControllerTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateName = "Controller",
TemplateType = MvcTextTemplateType.Razor
};
string fileName = repository.GetMvcControllerTextTemplateFileName(templateCriteria);
string expectedFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddController\Controller.tt";
Assert.AreEqual(expectedFileName, fileName);
}
}
}

36
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileGeneratorTests.cs

@ -42,7 +42,17 @@ namespace AspNet.Mvc.Tests @@ -42,7 +42,17 @@ namespace AspNet.Mvc.Tests
void ProjectPassedToGeneratorIsCSharpProject()
{
projectUsedByGenerator.SetLanguage("C#");
generator.Language = MvcTextTemplateLanguage.CSharp;
generator.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
}
void SelectAspxTemplate()
{
generator.TemplateType = MvcTextTemplateType.Aspx;
}
void SelectRazorTemplate()
{
generator.TemplateType = MvcTextTemplateType.Razor;
}
void GenerateFile()
@ -86,10 +96,11 @@ namespace AspNet.Mvc.Tests @@ -86,10 +96,11 @@ namespace AspNet.Mvc.Tests
}
[Test]
public void GenerateFile_CSharpEmptyViewTemplate_OutputFileGeneratedUsingFileNamePassedToGenerator()
public void GenerateFile_CSharpEmptyAspxViewTemplate_OutputFileGeneratedUsingFileNamePassedToGenerator()
{
CreateGenerator();
ProjectPassedToGeneratorIsCSharpProject();
SelectAspxTemplate();
string viewFolder = @"d:\projects\MyProject\Views\Home";
string viewName = "Index";
@ -103,12 +114,13 @@ namespace AspNet.Mvc.Tests @@ -103,12 +114,13 @@ namespace AspNet.Mvc.Tests
}
[Test]
public void GenerateFile_CSharpEmptyViewTemplate_TemplateFileUsedIsIsCSharpEmptyViewTemplate()
public void GenerateFile_CSharpEmptyAspxViewTemplate_TemplateFileUsedIsIsCSharpEmptyAspxViewTemplate()
{
string templateRootDirectory = @"d:\SharpDev\AddIns\AspNet.Mvc";
CreateTemplateRepository(templateRootDirectory);
CreateGenerator(templateRepository);
ProjectPassedToGeneratorIsCSharpProject();
SelectAspxTemplate();
GenerateFile();
@ -131,5 +143,23 @@ namespace AspNet.Mvc.Tests @@ -131,5 +143,23 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual("About", fakeHost.ViewName);
}
[Test]
public void GenerateFile_CSharpEmptyRazorViewTemplate_TemplateFileUsedIsIsCSharpRazorEmptyViewTemplate()
{
string templateRootDirectory = @"d:\SharpDev\AddIns\AspNet.Mvc";
CreateTemplateRepository(templateRootDirectory);
CreateGenerator(templateRepository);
ProjectPassedToGeneratorIsCSharpProject();
SelectRazorTemplate();
GenerateFile();
string inputFileName = fakeHost.InputFilePassedToProcessTemplate;
string expectedInputFileName =
@"d:\SharpDev\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Empty.tt";
Assert.AreEqual(expectedInputFileName, inputFileName);
}
}
}

36
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcViewFileNameTests.cs

@ -21,6 +21,8 @@ namespace AspNet.Mvc.Tests @@ -21,6 +21,8 @@ namespace AspNet.Mvc.Tests
public void ToString_ViewNameAndViewFolderSpecified_ReturnsViewFileNameGeneratedFromViewNameAndFolder()
{
CreateFileName();
mvcViewFileName.TemplateType = MvcTextTemplateType.Aspx;
mvcViewFileName.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
mvcViewFileName.ViewName = "Index";
mvcViewFileName.Folder = @"d:\projects\MyAspProject\Views\About";
@ -46,6 +48,8 @@ namespace AspNet.Mvc.Tests @@ -46,6 +48,8 @@ namespace AspNet.Mvc.Tests
public void GetPath_ViewNameIsNull_ReturnsView1AsFileNameAndUsesViewFolder()
{
CreateFileName();
mvcViewFileName.TemplateType = MvcTextTemplateType.Aspx;
mvcViewFileName.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
mvcViewFileName.Folder = @"d:\projects\MyProject\Views\Home";
mvcViewFileName.ViewName = null;
@ -81,6 +85,8 @@ namespace AspNet.Mvc.Tests @@ -81,6 +85,8 @@ namespace AspNet.Mvc.Tests
public void GetFileName_ViewNameAndViewFolderSpecified_ReturnsViewNameWithExtensionButNoFolderPath()
{
CreateFileName();
mvcViewFileName.TemplateType = MvcTextTemplateType.Aspx;
mvcViewFileName.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
mvcViewFileName.Folder = @"d:\projects\myproject\Views";
mvcViewFileName.ViewName = "Index";
@ -88,5 +94,35 @@ namespace AspNet.Mvc.Tests @@ -88,5 +94,35 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual("Index.aspx", fileName);
}
[Test]
public void GetPath_CSharpRazor_ReturnsCSharpRazorFileName()
{
CreateFileName();
mvcViewFileName.TemplateType = MvcTextTemplateType.Razor;
mvcViewFileName.TemplateLanguage = MvcTextTemplateLanguage.CSharp;
mvcViewFileName.ViewName = "Index";
mvcViewFileName.Folder = @"d:\projects\MyAspProject\Views\About";
string fileName = mvcViewFileName.GetPath();
string expectedFileName = @"d:\projects\MyAspProject\Views\About\Index.cshtml";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetPath_VisualBasicRazor_ReturnsVisualBasicRazorFileName()
{
CreateFileName();
mvcViewFileName.TemplateType = MvcTextTemplateType.Razor;
mvcViewFileName.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic;
mvcViewFileName.ViewName = "Index";
mvcViewFileName.Folder = @"d:\projects\MyAspProject\Views\About";
string fileName = mvcViewFileName.GetPath();
string expectedFileName = @"d:\projects\MyAspProject\Views\About\Index.vbhtml";
Assert.AreEqual(expectedFileName, fileName);
}
}
}

Loading…
Cancel
Save