46 changed files with 1510 additions and 169 deletions
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
<#@ template language="C#" HostSpecific="true" #> |
||||
<#@ output extension=".cs" #> |
||||
<# |
||||
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)Host; |
||||
#> |
||||
using System; |
||||
using System.Web.Mvc; |
||||
|
||||
namespace <#= mvcHost.Namespace #> |
||||
{ |
||||
/// <summary> |
||||
/// Description of <#= mvcHost.ControllerName #>. |
||||
/// </summary> |
||||
public class <#= mvcHost.ControllerName #> : Controller |
||||
{ |
||||
public ActionResult Index() |
||||
{ |
||||
return View(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
// 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; |
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class AddMvcControllerToProjectCommand : AbstractCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
IAddMvcItemToProjectView view = CreateView(); |
||||
view.DataContext = CreateDataContext(); |
||||
view.ShowDialog(); |
||||
} |
||||
|
||||
protected virtual IAddMvcItemToProjectView CreateView() |
||||
{ |
||||
return new AddMvcControllerToProjectView() { |
||||
Owner = WorkbenchSingleton.MainWindow |
||||
}; |
||||
} |
||||
|
||||
protected virtual object CreateDataContext() |
||||
{ |
||||
SelectedMvcControllerFolder selectedFolder = GetSelectedFolder(); |
||||
return new AddMvcControllerToProjectViewModel(selectedFolder); |
||||
} |
||||
|
||||
SelectedMvcControllerFolder GetSelectedFolder() |
||||
{ |
||||
var directoryNode = Owner as DirectoryNode; |
||||
return new SelectedMvcControllerFolder(directoryNode); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,58 @@
@@ -0,0 +1,58 @@
|
||||
<Window |
||||
x:Class="ICSharpCode.AspNet.Mvc.AddMvcControllerToProjectView" |
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
xmlns:core="http://icsharpcode.net/sharpdevelop/core" |
||||
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}" |
||||
mvc:CloseWindowBehaviour.IsClosed="{Binding IsClosed}" |
||||
WindowStartupLocation="CenterOwner" |
||||
FocusManager.FocusedElement="{Binding ElementName=ControllerNameTextBox}" |
||||
Height="400" |
||||
Width="400"> |
||||
|
||||
<Window.Resources> |
||||
<Style TargetType="Button" BasedOn="{x:Static core:GlobalStyles.ButtonStyle}"/> |
||||
</Window.Resources> |
||||
|
||||
<Grid> |
||||
<Grid.RowDefinitions> |
||||
<RowDefinition Height="Auto"/> |
||||
<RowDefinition Height="*"/> |
||||
<RowDefinition Height="Auto"/> |
||||
</Grid.RowDefinitions> |
||||
|
||||
<Grid> |
||||
<Grid.ColumnDefinitions> |
||||
<ColumnDefinition Width="Auto"/> |
||||
<ColumnDefinition Width="*"/> |
||||
</Grid.ColumnDefinitions> |
||||
|
||||
<TextBlock |
||||
Margin="4" |
||||
FontWeight="Bold" |
||||
Text="Controller Name:"/> |
||||
<TextBox |
||||
x:Name="ControllerNameTextBox" |
||||
Grid.Column="1" |
||||
Text="{Binding Path=ControllerName, UpdateSourceTrigger=PropertyChanged}"/> |
||||
</Grid> |
||||
|
||||
<StackPanel |
||||
Orientation="Horizontal" |
||||
HorizontalAlignment="Right" |
||||
Margin="4" |
||||
Grid.Row="2"> |
||||
<Button |
||||
Margin="2, 0" |
||||
Content="_Add" |
||||
IsDefault="True" |
||||
Command="{Binding Path=AddMvcControllerCommand}"/> |
||||
<Button |
||||
Margin="2, 0" |
||||
Content="_Cancel" |
||||
IsCancel="True"/> |
||||
</StackPanel> |
||||
</Grid> |
||||
</Window> |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
// 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; |
||||
using System.Windows; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public partial class AddMvcControllerToProjectView : Window, IAddMvcItemToProjectView |
||||
{ |
||||
public AddMvcControllerToProjectView() |
||||
{ |
||||
InitializeComponent(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,101 @@
@@ -0,0 +1,101 @@
|
||||
// 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; |
||||
using System.Windows.Input; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class AddMvcControllerToProjectViewModel : ViewModelBase<AddMvcControllerToProjectViewModel> |
||||
{ |
||||
IMvcControllerFileGenerator controllerGenerator; |
||||
ISelectedMvcFolder selectedControllerFolder; |
||||
IMvcFileService fileService; |
||||
MvcControllerFileName controllerFileName = new MvcControllerFileName(); |
||||
bool closed; |
||||
|
||||
public AddMvcControllerToProjectViewModel(ISelectedMvcFolder selectedControllerFolder) |
||||
: this( |
||||
selectedControllerFolder, |
||||
new MvcControllerFileGenerator(), |
||||
new MvcFileService()) |
||||
{ |
||||
} |
||||
|
||||
public AddMvcControllerToProjectViewModel( |
||||
ISelectedMvcFolder selectedControllerFolder, |
||||
IMvcControllerFileGenerator controllerGenerator, |
||||
IMvcFileService fileService) |
||||
{ |
||||
this.selectedControllerFolder = selectedControllerFolder; |
||||
this.controllerGenerator = controllerGenerator; |
||||
this.fileService = fileService; |
||||
this.controllerFileName.Folder = selectedControllerFolder.Path; |
||||
|
||||
CreateCommands(); |
||||
} |
||||
|
||||
void CreateCommands() |
||||
{ |
||||
AddMvcControllerCommand = new DelegateCommand(param => AddMvcController(), param => CanAddMvcController()); |
||||
} |
||||
|
||||
public ICommand AddMvcControllerCommand { get; private set; } |
||||
|
||||
public string ControllerName { |
||||
get { return controllerFileName.ControllerName; } |
||||
set { controllerFileName.ControllerName = value; } |
||||
} |
||||
|
||||
public bool IsClosed { |
||||
get { return closed; } |
||||
set { |
||||
closed = value; |
||||
OnPropertyChanged(viewModel => viewModel.IsClosed); |
||||
} |
||||
} |
||||
|
||||
public bool CanAddMvcController() |
||||
{ |
||||
return controllerFileName.HasValidControllerName(); |
||||
} |
||||
|
||||
public void AddMvcController() |
||||
{ |
||||
GenerateMvcControllerFile(); |
||||
AddMvcControllerFileToProject(); |
||||
OpenMvcControllerFileCreated(); |
||||
IsClosed = true; |
||||
} |
||||
|
||||
void GenerateMvcControllerFile() |
||||
{ |
||||
ConfigureMvcControllerGenerator(); |
||||
controllerGenerator.GenerateFile(controllerFileName); |
||||
} |
||||
|
||||
void ConfigureMvcControllerGenerator() |
||||
{ |
||||
controllerGenerator.Language = GetTemplateLanguage(); |
||||
controllerGenerator.Project = selectedControllerFolder.Project; |
||||
} |
||||
|
||||
MvcTextTemplateLanguage GetTemplateLanguage() |
||||
{ |
||||
return selectedControllerFolder.GetTemplateLanguage(); |
||||
} |
||||
|
||||
void AddMvcControllerFileToProject() |
||||
{ |
||||
string fileName = controllerFileName.GetFileName(); |
||||
selectedControllerFolder.AddFileToProject(fileName); |
||||
} |
||||
|
||||
void OpenMvcControllerFileCreated() |
||||
{ |
||||
string path = controllerFileName.GetPath(); |
||||
fileService.OpenFile(path); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
// 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; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public interface IMvcControllerFileGenerator |
||||
{ |
||||
MvcTextTemplateLanguage Language { get; set; } |
||||
IProject Project { get; set; } |
||||
|
||||
void GenerateFile(MvcControllerFileName fileName); |
||||
} |
||||
} |
||||
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
// 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; |
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class IsMvcControllerFolderSelectedConditionEvaluator : IConditionEvaluator |
||||
{ |
||||
public bool IsValid(object owner, Condition condition) |
||||
{ |
||||
var directoryNode = owner as DirectoryNode; |
||||
return directoryNode != null; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// 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; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class MvcControllerFileGenerator : MvcFileGenerator, IMvcControllerFileGenerator |
||||
{ |
||||
MvcTextTemplateRepository textTemplateRepository; |
||||
|
||||
public MvcControllerFileGenerator() |
||||
: this( |
||||
new MvcTextTemplateHostFactory(), |
||||
new MvcTextTemplateRepository()) |
||||
{ |
||||
} |
||||
|
||||
public MvcControllerFileGenerator( |
||||
IMvcTextTemplateHostFactory hostFactory, |
||||
MvcTextTemplateRepository textTemplateRepository) |
||||
: base(hostFactory) |
||||
{ |
||||
this.textTemplateRepository = textTemplateRepository; |
||||
} |
||||
|
||||
public void GenerateFile(MvcControllerFileName fileName) |
||||
{ |
||||
base.GenerateFile(fileName); |
||||
} |
||||
|
||||
protected override void ConfigureHost(IMvcTextTemplateHost host, MvcFileName fileName) |
||||
{ |
||||
var controllerFileName = fileName as MvcControllerFileName; |
||||
host.ControllerName = controllerFileName.ControllerName; |
||||
host.Namespace = GetNamespace(); |
||||
} |
||||
|
||||
string GetNamespace() |
||||
{ |
||||
return Project.RootNamespace + ".Controllers"; |
||||
} |
||||
|
||||
protected override string GetTextTemplateFileName() |
||||
{ |
||||
return textTemplateRepository.GetMvcControllerTextTemplateFileName(Language, "Controller"); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
// 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; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class MvcControllerFileName : MvcFileName |
||||
{ |
||||
string controllerName = String.Empty; |
||||
|
||||
public string ControllerName { |
||||
get { |
||||
EnsureControllerNameIsNotNull(); |
||||
return controllerName; |
||||
} |
||||
set { controllerName = value; } |
||||
} |
||||
|
||||
void EnsureControllerNameIsNotNull() |
||||
{ |
||||
controllerName = ConvertToEmptyStringIfNull(controllerName); |
||||
} |
||||
|
||||
public MvcTextTemplateLanguage Language { get; set; } |
||||
|
||||
public override string GetFileName() |
||||
{ |
||||
string name = GetControllerName(); |
||||
return name + GetFileExtension(); |
||||
} |
||||
|
||||
string GetControllerName() |
||||
{ |
||||
if (controllerName != null) { |
||||
return controllerName; |
||||
} |
||||
return "Default1Controller"; |
||||
} |
||||
|
||||
string GetFileExtension() |
||||
{ |
||||
return MvcTextTemplateLanguageFileNameExtension.GetFileExtension(Language); |
||||
} |
||||
|
||||
public bool HasValidControllerName() |
||||
{ |
||||
return !String.IsNullOrEmpty(controllerName); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
// 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; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class MvcControllerTextTemplateFileName : MvcTextTemplateFileName |
||||
{ |
||||
public MvcControllerTextTemplateFileName( |
||||
string textTemplatesRootDirectory, |
||||
MvcTextTemplateLanguage language, |
||||
string templateName) |
||||
: base(textTemplatesRootDirectory, language, templateName) |
||||
{ |
||||
} |
||||
|
||||
protected override string LanguageSubdirectoryFormatString { |
||||
get { return "{0}\\CodeTemplates\\AddController"; } |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
// 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; |
||||
using System.CodeDom.Compiler; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public abstract class MvcFileGenerator |
||||
{ |
||||
IMvcTextTemplateHostFactory hostFactory; |
||||
|
||||
public MvcFileGenerator(IMvcTextTemplateHostFactory hostFactory) |
||||
{ |
||||
this.hostFactory = hostFactory; |
||||
} |
||||
|
||||
public MvcTextTemplateLanguage Language { get; set; } |
||||
public IProject Project { get; set; } |
||||
|
||||
public void GenerateFile(MvcFileName fileName) |
||||
{ |
||||
using (IMvcTextTemplateHost host = CreateHost()) { |
||||
GenerateFile(host, fileName); |
||||
} |
||||
} |
||||
|
||||
IMvcTextTemplateHost CreateHost() |
||||
{ |
||||
return hostFactory.CreateMvcTextTemplateHost(Project); |
||||
} |
||||
|
||||
void GenerateFile(IMvcTextTemplateHost host, MvcFileName fileName) |
||||
{ |
||||
ConfigureHost(host, fileName); |
||||
string templateFileName = GetTextTemplateFileName(); |
||||
string outputViewFileName = fileName.GetPath(); |
||||
host.ProcessTemplate(templateFileName, outputViewFileName); |
||||
|
||||
if (host.Errors.Count > 0) { |
||||
CompilerError error = host.Errors[0]; |
||||
Console.WriteLine("ProcessTemplate error: " + error.ErrorText); |
||||
Console.WriteLine("ProcessTemplate error: Line: " + error.Line); |
||||
} |
||||
} |
||||
|
||||
protected abstract void ConfigureHost(IMvcTextTemplateHost host, MvcFileName fileName); |
||||
protected abstract string GetTextTemplateFileName(); |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// 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; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class MvcFileName |
||||
{ |
||||
string folder = String.Empty; |
||||
|
||||
public string Folder { |
||||
get { |
||||
EnsureFolderIsNotNull(); |
||||
return folder; |
||||
} |
||||
set { folder = value; } |
||||
} |
||||
|
||||
void EnsureFolderIsNotNull() |
||||
{ |
||||
folder = ConvertToEmptyStringIfNull(folder); |
||||
} |
||||
|
||||
public override string ToString() |
||||
{ |
||||
return GetPath(); |
||||
} |
||||
|
||||
public string GetPath() |
||||
{ |
||||
string fileName = GetFileName(); |
||||
return Path.Combine(Folder, fileName); |
||||
} |
||||
|
||||
public virtual string GetFileName() |
||||
{ |
||||
return String.Empty; |
||||
} |
||||
|
||||
protected static string ConvertToEmptyStringIfNull(string text) |
||||
{ |
||||
if (text != null) { |
||||
return text; |
||||
} |
||||
return String.Empty; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// 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; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public abstract class MvcTextTemplateFileName |
||||
{ |
||||
string textTemplatesRootDirectory; |
||||
MvcTextTemplateLanguage language; |
||||
string templateName; |
||||
|
||||
public MvcTextTemplateFileName( |
||||
string textTemplatesRootDirectory, |
||||
MvcTextTemplateLanguage language, |
||||
string templateName) |
||||
{ |
||||
this.textTemplatesRootDirectory = textTemplatesRootDirectory; |
||||
this.language = language; |
||||
this.templateName = templateName; |
||||
} |
||||
|
||||
public string GetPath() |
||||
{ |
||||
string fileName = GetTemplateFileName(); |
||||
string directory = GetTemplateDirectory(language); |
||||
return Path.Combine(directory, fileName); |
||||
} |
||||
|
||||
string GetTemplateFileName() |
||||
{ |
||||
return templateName + ".tt"; |
||||
} |
||||
|
||||
string GetTemplateDirectory(MvcTextTemplateLanguage language) |
||||
{ |
||||
string languageSubdirectory = GetLanguageSubdirectory(language); |
||||
return Path.Combine(textTemplatesRootDirectory, languageSubdirectory); |
||||
} |
||||
|
||||
string GetLanguageSubdirectory(MvcTextTemplateLanguage language) |
||||
{ |
||||
return String.Format(LanguageSubdirectoryFormatString, language.ToString()); |
||||
} |
||||
|
||||
protected abstract string LanguageSubdirectoryFormatString { get; } |
||||
} |
||||
} |
||||
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
// 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 MvcTextTemplateLanguageFileNameExtension |
||||
{ |
||||
public static string GetFileExtension(MvcTextTemplateLanguage language) |
||||
{ |
||||
if (language == MvcTextTemplateLanguage.VisualBasic) { |
||||
return ".vb"; |
||||
} |
||||
return ".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; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class SelectedMvcControllerFolder : SelectedMvcFolder |
||||
{ |
||||
public SelectedMvcControllerFolder(DirectoryNode directoryNode) |
||||
: base(directoryNode) |
||||
{ |
||||
} |
||||
|
||||
public SelectedMvcControllerFolder() |
||||
: base() |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
// 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; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.AspNet.Mvc |
||||
{ |
||||
public class SelectedMvcFolder : ISelectedMvcFolder |
||||
{ |
||||
DirectoryNode directoryNode; |
||||
|
||||
public SelectedMvcFolder(DirectoryNode directoryNode) |
||||
{ |
||||
this.directoryNode = directoryNode; |
||||
} |
||||
|
||||
public SelectedMvcFolder() |
||||
: this(ProjectBrowserPad.Instance.SelectedNode as DirectoryNode) |
||||
{ |
||||
} |
||||
|
||||
public string Path { |
||||
get { return directoryNode.Directory; } |
||||
} |
||||
|
||||
public IProject Project { |
||||
get { return directoryNode.Project; } |
||||
} |
||||
|
||||
public void AddFileToProject(string fileName) |
||||
{ |
||||
string fullPath = System.IO.Path.Combine(Path, fileName); |
||||
AddNewFileToDirectoryNode(fullPath); |
||||
SaveProject(); |
||||
} |
||||
|
||||
protected virtual void AddNewFileToDirectoryNode(string path) |
||||
{ |
||||
directoryNode.AddNewFile(path); |
||||
} |
||||
|
||||
void SaveProject() |
||||
{ |
||||
directoryNode.Project.Save(); |
||||
} |
||||
|
||||
public MvcTextTemplateLanguage GetTemplateLanguage() |
||||
{ |
||||
string language = Project.Language; |
||||
return MvcTextTemplateLanguageConverter.Convert(language); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
// 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; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace AspNet.Mvc.Tests.Helpers |
||||
{ |
||||
public class FakeMvcControllerFileGenerator : IMvcControllerFileGenerator |
||||
{ |
||||
public MvcTextTemplateLanguage Language { get; set; } |
||||
public IProject Project { get; set; } |
||||
|
||||
public bool IsGenerateFileCalled; |
||||
public MvcControllerFileName FileNamePassedToGenerateController; |
||||
|
||||
public void GenerateFile(MvcControllerFileName fileName) |
||||
{ |
||||
FileNamePassedToGenerateController = fileName; |
||||
IsGenerateFileCalled = true; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
// 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; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
|
||||
namespace AspNet.Mvc.Tests.Helpers |
||||
{ |
||||
public class TestableAddMvcControllerToProjectCommand : AddMvcControllerToProjectCommand |
||||
{ |
||||
public FakeAddMvcItemToProjectView FakeAddMvcControllerToProjectView = new FakeAddMvcItemToProjectView(); |
||||
|
||||
protected override IAddMvcItemToProjectView CreateView() |
||||
{ |
||||
return FakeAddMvcControllerToProjectView; |
||||
} |
||||
|
||||
public object FakeDataContext { get; set; } |
||||
|
||||
protected override object CreateDataContext() |
||||
{ |
||||
return FakeDataContext; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
// 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; |
||||
using AspNet.Mvc.Tests.Helpers; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class AddMvcControllerToProjectCommandTests |
||||
{ |
||||
TestableAddMvcControllerToProjectCommand command; |
||||
FakeAddMvcItemToProjectView fakeView; |
||||
|
||||
void CreateCommand() |
||||
{ |
||||
command = new TestableAddMvcControllerToProjectCommand(); |
||||
fakeView = command.FakeAddMvcControllerToProjectView; |
||||
} |
||||
|
||||
[Test] |
||||
public void Run_CommandExecuted_ViewIsDisplayed() |
||||
{ |
||||
CreateCommand(); |
||||
command.Run(); |
||||
|
||||
Assert.IsTrue(fakeView.IsShowDialogCalled); |
||||
} |
||||
|
||||
[Test] |
||||
public void Run_CommandExecuted_ViewDataContextIsSet() |
||||
{ |
||||
CreateCommand(); |
||||
object expectedDataContext = new object(); |
||||
command.FakeDataContext = expectedDataContext; |
||||
command.Run(); |
||||
|
||||
object dataContext = fakeView.DataContext; |
||||
|
||||
Assert.AreEqual(expectedDataContext, dataContext); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,197 @@
@@ -0,0 +1,197 @@
|
||||
// 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; |
||||
using System.Collections.Generic; |
||||
using AspNet.Mvc.Tests.Helpers; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class AddMvcControllerToProjectControllerModelTests |
||||
{ |
||||
AddMvcControllerToProjectViewModel viewModel; |
||||
FakeMvcControllerFileGenerator fakeControllerGenerator; |
||||
FakeSelectedMvcFolder fakeSelectedMvcControllerFolder; |
||||
List<string> propertyChangedEvents; |
||||
FakeMvcFileService fakeFileService; |
||||
|
||||
void CreateViewModel() |
||||
{ |
||||
string path = @"d:\projects\MyAspMvcProject\Controllers"; |
||||
CreateViewModelWithControllerFolderPath(path); |
||||
} |
||||
|
||||
void CreateViewModelWithControllerFolderPath(string path) |
||||
{ |
||||
fakeSelectedMvcControllerFolder = new FakeSelectedMvcFolder(); |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp; |
||||
fakeSelectedMvcControllerFolder.Path = path; |
||||
fakeControllerGenerator = new FakeMvcControllerFileGenerator(); |
||||
fakeFileService = new FakeMvcFileService(); |
||||
viewModel = new AddMvcControllerToProjectViewModel( |
||||
fakeSelectedMvcControllerFolder, |
||||
fakeControllerGenerator, |
||||
fakeFileService); |
||||
} |
||||
|
||||
void MonitorPropertyChangedEvents() |
||||
{ |
||||
propertyChangedEvents = new List<string>(); |
||||
viewModel.PropertyChanged += (source, e) => propertyChangedEvents.Add(e.PropertyName); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcControllerCommand_ExecutedWhenControllerNameSpecified_MvcControllerIsGenerated() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.ControllerName = "MyControllerPage"; |
||||
viewModel.AddMvcControllerCommand.Execute(null); |
||||
|
||||
bool generated = fakeControllerGenerator.IsGenerateFileCalled; |
||||
|
||||
Assert.IsTrue(generated); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_ControllerNameAndControllerFolderSpecified_ControllerFullPathUsedToGenerateFile() |
||||
{ |
||||
CreateViewModelWithControllerFolderPath(@"d:\projects\MyProject\Controllers"); |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp; |
||||
viewModel.ControllerName = "Home"; |
||||
viewModel.AddMvcController(); |
||||
|
||||
MvcControllerFileName controllerFileName = fakeControllerGenerator.FileNamePassedToGenerateController; |
||||
string fileName = controllerFileName.GetPath(); |
||||
string expectedFileName = @"d:\projects\MyProject\Controllers\Home.cs"; |
||||
|
||||
Assert.AreEqual(expectedFileName, fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_SelectedControllerFolderIsInVisualBasicProject_VisualBasicMvcControllerFileGenerated() |
||||
{ |
||||
CreateViewModel(); |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.VisualBasic; |
||||
viewModel.AddMvcController(); |
||||
|
||||
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.Language; |
||||
|
||||
Assert.AreEqual(MvcTextTemplateLanguage.VisualBasic, templateLanguage); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_SelectedControllerFolderIsInCSharpProject_CSharpMvcControllerFileGenerated() |
||||
{ |
||||
CreateViewModel(); |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp; |
||||
viewModel.AddMvcController(); |
||||
|
||||
MvcTextTemplateLanguage templateLanguage = fakeControllerGenerator.Language; |
||||
|
||||
Assert.AreEqual(MvcTextTemplateLanguage.CSharp, templateLanguage); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_SelectedControllerFolderIsInVisualBasicProject_VisualBasicProjectIsPassedToMvcControllerGenerator() |
||||
{ |
||||
CreateViewModel(); |
||||
fakeSelectedMvcControllerFolder.ProjectLanguage = "VBNet"; |
||||
viewModel.AddMvcController(); |
||||
|
||||
IProject project = fakeControllerGenerator.Project; |
||||
TestableProject expectedProject = fakeSelectedMvcControllerFolder.FakeProject; |
||||
|
||||
Assert.AreEqual(expectedProject, project); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_FileIsGenerated_FileIsAddedToProject() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.ControllerName = "Home"; |
||||
fakeSelectedMvcControllerFolder.ProjectLanguage = "C#"; |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp; |
||||
fakeSelectedMvcControllerFolder.Path = @"d:\projects\MyAspMvcProject\Controllers\Home"; |
||||
viewModel.AddMvcController(); |
||||
|
||||
string fileAddedToProject = fakeSelectedMvcControllerFolder.FileNamePassedToAddFile; |
||||
string expectedFileAddedToProject = "Home.cs"; |
||||
|
||||
Assert.AreEqual(expectedFileAddedToProject, fileAddedToProject); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_FileIsGenerated_WindowIsClosed() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.AddMvcController(); |
||||
|
||||
bool closed = viewModel.IsClosed; |
||||
|
||||
Assert.IsTrue(closed); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsClosed_MvcControllerFileIsNotGenerated_ReturnsFalse() |
||||
{ |
||||
CreateViewModel(); |
||||
bool closed = viewModel.IsClosed; |
||||
|
||||
Assert.IsFalse(closed); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_FileIsGenerated_PropertyChangedEventIsFiredForIsClosedProperty() |
||||
{ |
||||
CreateViewModel(); |
||||
MonitorPropertyChangedEvents(); |
||||
viewModel.AddMvcController(); |
||||
|
||||
bool fired = propertyChangedEvents.Contains("IsClosed"); |
||||
|
||||
Assert.IsTrue(fired); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcController_FileIsGenerated_FileIsOpened() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.ControllerName = "HomeController"; |
||||
fakeSelectedMvcControllerFolder.ProjectLanguage = "C#"; |
||||
fakeSelectedMvcControllerFolder.TemplateLanguage = MvcTextTemplateLanguage.CSharp; |
||||
fakeSelectedMvcControllerFolder.Path = @"d:\projects\MyAspMvcProject\Controllers"; |
||||
viewModel.AddMvcController(); |
||||
|
||||
string fileNameOpened = fakeFileService.FileNamePassedToOpenFile; |
||||
string expectedFileNameOpened = @"d:\projects\MyAspMvcProject\Controllers\HomeController.cs"; |
||||
|
||||
Assert.AreEqual(expectedFileNameOpened, fileNameOpened); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcControllerCommand_ControllerNameIsEmptyString_CommandIsDisabled() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.ControllerName = String.Empty; |
||||
|
||||
bool canExecute = viewModel.AddMvcControllerCommand.CanExecute(null); |
||||
|
||||
Assert.IsFalse(canExecute); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddMvcControllerCommand_ControllerNameIsNotEmptyString_CommandIsEnable() |
||||
{ |
||||
CreateViewModel(); |
||||
viewModel.ControllerName = "MyController"; |
||||
|
||||
bool canExecute = viewModel.AddMvcControllerCommand.CanExecute(null); |
||||
|
||||
Assert.IsTrue(canExecute); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// 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; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class IsMvcControllerFolderSelectedConditionEvaluatorTests |
||||
{ |
||||
IsMvcControllerFolderSelectedConditionEvaluator conditionEvaluator; |
||||
|
||||
void CreateConditionEvaluator() |
||||
{ |
||||
conditionEvaluator = new IsMvcControllerFolderSelectedConditionEvaluator(); |
||||
} |
||||
|
||||
bool IsValid(object owner) |
||||
{ |
||||
CreateConditionEvaluator(); |
||||
return conditionEvaluator.IsValid(owner, null); |
||||
} |
||||
|
||||
DirectoryNode CreateControllersFolderNode() |
||||
{ |
||||
var node = new DirectoryNode("Controllers"); |
||||
return node; |
||||
} |
||||
|
||||
[Test] |
||||
public void IsValid_NullOwnerIsPassed_ReturnsFalse() |
||||
{ |
||||
bool valid = IsValid(owner: null); |
||||
|
||||
Assert.IsFalse(valid); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsValid_ControllersFolderNodePassed_ReturnsTrue() |
||||
{ |
||||
DirectoryNode owner = CreateControllersFolderNode(); |
||||
bool valid = IsValid(owner); |
||||
|
||||
Assert.IsTrue(valid); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,151 @@
@@ -0,0 +1,151 @@
|
||||
// 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; |
||||
using AspNet.Mvc.Tests.Helpers; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class MvcControllerFileGeneratorTests |
||||
{ |
||||
MvcControllerFileGenerator generator; |
||||
TestableProject 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); |
||||
projectUsedByGenerator = TestableProject.CreateProject(); |
||||
generator.Project = projectUsedByGenerator; |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
} |
||||
|
||||
void ProjectPassedToGeneratorIsCSharpProject() |
||||
{ |
||||
projectUsedByGenerator.SetLanguage("C#"); |
||||
generator.Language = MvcTextTemplateLanguage.CSharp; |
||||
} |
||||
|
||||
void GenerateFile() |
||||
{ |
||||
GenerateFile(@"d:\projects\myproject\Controllers", "Home"); |
||||
} |
||||
|
||||
void GenerateFile(string folder, string name) |
||||
{ |
||||
var fileName = new MvcControllerFileName(); |
||||
fileName.Folder = folder; |
||||
fileName.ControllerName = name; |
||||
GenerateFile(fileName); |
||||
} |
||||
|
||||
void GenerateFile(MvcControllerFileName fileName) |
||||
{ |
||||
generator.GenerateFile(fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void GenerateFile_CSharpEmptyViewTemplate_MvcTextTemplateHostIsCreated() |
||||
{ |
||||
CreateGenerator(); |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
GenerateFile(); |
||||
IProject project = fakeHostFactory.ProjectPassedToCreateMvcTextTemplateHost; |
||||
|
||||
Assert.AreEqual(projectUsedByGenerator, project); |
||||
} |
||||
|
||||
[Test] |
||||
public void GenerateFile_CSharpEmptyViewTemplate_MvcTextTemplateHostIsDisposed() |
||||
{ |
||||
CreateGenerator(); |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
GenerateFile(); |
||||
bool disposed = fakeHost.IsDisposed; |
||||
|
||||
Assert.IsTrue(disposed); |
||||
} |
||||
|
||||
[Test] |
||||
public void GenerateFile_CSharpEmptyControllerTemplate_OutputFileGeneratedUsingFileNamePassedToGenerator() |
||||
{ |
||||
CreateGenerator(); |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
|
||||
string controllerFolder = @"d:\projects\MyProject\Controllers"; |
||||
string controllerName = "HomeController"; |
||||
GenerateFile(controllerFolder, controllerName); |
||||
|
||||
string outputFileGenerated = fakeHost.OutputFilePassedToProcessTemplate; |
||||
string expectedOutputFileGenerated = |
||||
@"d:\projects\MyProject\Controllers\HomeController.cs"; |
||||
|
||||
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() |
||||
{ |
||||
CreateGenerator(); |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
|
||||
string controllerFolder = @"d:\projects\MyProject\Controllers"; |
||||
string controllerName = "AboutController"; |
||||
GenerateFile(controllerFolder, controllerName); |
||||
|
||||
Assert.AreEqual("AboutController", fakeHost.ControllerName); |
||||
} |
||||
|
||||
[Test] |
||||
public void GenerateFile_CSharpControllerTemplate_MvcTextTemplateHostNamespaceIsTakenFromProject() |
||||
{ |
||||
CreateGenerator(); |
||||
ProjectPassedToGeneratorIsCSharpProject(); |
||||
projectUsedByGenerator.RootNamespace = "MyProjectNamespace"; |
||||
|
||||
string controllerFolder = @"d:\projects\MyProject\Controllers"; |
||||
string controllerName = "AboutController"; |
||||
GenerateFile(controllerFolder, controllerName); |
||||
|
||||
string expectedNamespace = "MyProjectNamespace.Controllers"; |
||||
|
||||
Assert.AreEqual(expectedNamespace, fakeHost.Namespace); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,110 @@
@@ -0,0 +1,110 @@
|
||||
// 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; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class MvcControllerFileNameTests |
||||
{ |
||||
MvcControllerFileName mvcControllerFileName; |
||||
|
||||
void CreateFileName() |
||||
{ |
||||
mvcControllerFileName = new MvcControllerFileName(); |
||||
} |
||||
|
||||
[Test] |
||||
public void ToString_ControllerNameAndFolderSpecified_ReturnsControllerFileNameGeneratedFromControllerNameAndFolder() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Language = MvcTextTemplateLanguage.CSharp; |
||||
mvcControllerFileName.ControllerName = "AboutController"; |
||||
mvcControllerFileName.Folder = @"d:\projects\MyAspProject\Controller\About"; |
||||
|
||||
string fileName = mvcControllerFileName.ToString(); |
||||
string expectedFileName = @"d:\projects\MyAspProject\Controller\About\AboutController.cs"; |
||||
|
||||
Assert.AreEqual(expectedFileName, fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetPath_ControllerFolderIsNull_ReturnsControllerFileNameUsingOnlyControllerName() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Language = MvcTextTemplateLanguage.CSharp; |
||||
mvcControllerFileName.ControllerName = "HomeController"; |
||||
mvcControllerFileName.Folder = null; |
||||
|
||||
string fileName = mvcControllerFileName.GetPath(); |
||||
|
||||
Assert.AreEqual("HomeController.cs", fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetPath_ControllerNameIsNull_ReturnsDefault1ControllerAsFileNameAndUsesControllerFolder() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Language = MvcTextTemplateLanguage.CSharp; |
||||
mvcControllerFileName.Folder = @"d:\projects\MyProject\Controllers\Home"; |
||||
mvcControllerFileName.ControllerName = null; |
||||
|
||||
string fileName = mvcControllerFileName.GetPath(); |
||||
string expectedFileName = @"d:\projects\MyProject\Controllers\Home\Default1Controller.cs"; |
||||
|
||||
Assert.AreEqual(expectedFileName, fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void ControllerName_ControllerNameIsNull_ReturnsEmptyString() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.ControllerName = null; |
||||
|
||||
string controllerName = mvcControllerFileName.ControllerName; |
||||
|
||||
Assert.AreEqual(String.Empty, controllerName); |
||||
} |
||||
|
||||
[Test] |
||||
public void ControllerFolder_ControllerFolderIsNull_ReturnsEmptyString() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Folder = null; |
||||
|
||||
string controllerFolder = mvcControllerFileName.Folder; |
||||
|
||||
Assert.AreEqual(String.Empty, controllerFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetFileName_ControllerNameAndFolderSpecified_ReturnsControllerNameWithExtensionButNoFolderPath() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Language = MvcTextTemplateLanguage.CSharp; |
||||
mvcControllerFileName.Folder = @"d:\projects\myproject\Controllers"; |
||||
mvcControllerFileName.ControllerName = "Index"; |
||||
|
||||
string fileName = mvcControllerFileName.GetFileName(); |
||||
|
||||
Assert.AreEqual("Index.cs", fileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetPath_LanguageIsSetToVisualBasic_ReturnsVisualBasicControllerFileName() |
||||
{ |
||||
CreateFileName(); |
||||
mvcControllerFileName.Language = MvcTextTemplateLanguage.VisualBasic; |
||||
mvcControllerFileName.ControllerName = "AboutController"; |
||||
mvcControllerFileName.Folder = @"d:\projects\MyAspProject\Controller\About"; |
||||
|
||||
string fileName = mvcControllerFileName.GetPath(); |
||||
string expectedFileName = @"d:\projects\MyAspProject\Controller\About\AboutController.vb"; |
||||
|
||||
Assert.AreEqual(expectedFileName, fileName); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// 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; |
||||
using ICSharpCode.AspNet.Mvc; |
||||
using NUnit.Framework; |
||||
|
||||
namespace AspNet.Mvc.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class MvcTextTemplateHostTests |
||||
{ |
||||
MvcTextTemplateHost host; |
||||
|
||||
void CreateHost() |
||||
{ |
||||
host = new MvcTextTemplateHost(null, null, null); |
||||
} |
||||
|
||||
[Test] |
||||
public void ViewName_SetToNull_ReturnsEmptyString() |
||||
{ |
||||
CreateHost(); |
||||
host.ViewName = null; |
||||
string viewName = host.ViewName; |
||||
|
||||
Assert.AreEqual(String.Empty, viewName); |
||||
} |
||||
|
||||
[Test] |
||||
public void ControllerName_SetToNull_ReturnsEmptyString() |
||||
{ |
||||
CreateHost(); |
||||
host.ControllerName = null; |
||||
string controllerName = host.ControllerName; |
||||
|
||||
Assert.AreEqual(String.Empty, controllerName); |
||||
} |
||||
|
||||
[Test] |
||||
public void Namespace_SetToNull_ReturnsEmptyString() |
||||
{ |
||||
CreateHost(); |
||||
host.Namespace = null; |
||||
string ns = host.Namespace; |
||||
|
||||
Assert.AreEqual(String.Empty, ns); |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue