#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

269 lines
9.4 KiB

// 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 System.Linq;
using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc;
using NUnit.Framework;
namespace AspNet.Mvc.Tests
{
[TestFixture]
public class MvcTextTemplateRepositoryTests
{
MvcTextTemplateRepository repository;
FakeFileSystem fakeFileSystem;
void CreateRepositoryWithAspNetMvcAddInDirectory(string mvcAddInPath)
{
fakeFileSystem = new FakeFileSystem();
repository = new MvcTextTemplateRepository(mvcAddInPath, fakeFileSystem);
}
void AddTextTemplateToFolder(string path, string fileName)
{
string[] fileNames = new string[] {
fileName
};
AddTextTemplatesToFolder(path, fileNames);
}
void AddTextTemplatesToFolder(string path, string[] fileNames)
{
fakeFileSystem.AddFakeFiles(path, "*.tt", fileNames);
}
[Test]
public void GetMvcViewTextTemplateFileName_CSharpEmptyTemplateRequested_ReturnsFileNameToCSharpEmptyTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
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";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcViewTextTemplateFileName_VisualBasicEmptyTemplateRequested_ReturnsFileNameToVisualBasicEmptyTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
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";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcControllerTextTemplateFileName_CSharpControllerTemplateRequested_ReturnsFileNameToCSharpControllerTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
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";
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetMvcControllerTextTemplateFileName_VisualBasicControllerTemplateRequested_ReturnsFileNameToVisualBasicControllerTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
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);
}
[Test]
public void GetMvcControllerTextTemplates_CSharpAspxTemplatesRequestedAndOneControllerTemplateInFolder_ReturnsTwoCSharpAspxControllerTextTemplates()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateType = MvcTextTemplateType.Aspx
};
List<MvcControllerTextTemplate> templates = repository.GetMvcControllerTextTemplates(templateCriteria).ToList();
string existingTemplateFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddController\Controller.tt";
var expectedTemplate1 = new MvcControllerTextTemplate() {
Name = "Empty",
Description = "Empty controller",
FileName = existingTemplateFileName,
AddActionMethods = false
};
var expectedTemplate2 = new MvcControllerTextTemplate() {
Name = "EmptyReadWrite",
Description = "Controller with create, read, update and delete actions",
FileName = existingTemplateFileName,
AddActionMethods = true
};
var expectedTemplates = new MvcControllerTextTemplate[] {
expectedTemplate1,
expectedTemplate2
};
MvcControllerTextTemplateCollectionAssert.AreEqual(expectedTemplates, templates);
}
[Test]
public void GetMvcViewTextTemplates_CSharpAspxTemplatesRequestedAndOneViewTemplateInFolder_ReturnsOneViewTextTemplate()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string templateFolder =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp";
string existingTemplateFileName =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Empty.tt";
AddTextTemplateToFolder(templateFolder, existingTemplateFileName);
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateType = MvcTextTemplateType.Aspx
};
List<MvcViewTextTemplate> templates = repository.GetMvcViewTextTemplates(templateCriteria).ToList();
var expectedTemplate = new MvcViewTextTemplate() {
Name = "Empty",
FileName = existingTemplateFileName
};
var expectedTemplates = new MvcViewTextTemplate[] {
expectedTemplate
};
MvcViewTextTemplateCollectionAssert.AreEqual(expectedTemplates, templates);
}
[Test]
public void GetMvcViewTextTemplates_CSharpRazorTemplatesRequestedAndTwoViewTemplatesInFolder_ReturnsTwoViewTextTemplates()
{
CreateRepositoryWithAspNetMvcAddInDirectory(@"C:\SD\AddIns\AspNet.Mvc");
string templateFolder =
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML";
string[] templateFileNames = new string[] {
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\B.tt",
@"C:\SD\AddIns\AspNet.Mvc\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\A.tt"
};
AddTextTemplatesToFolder(templateFolder, templateFileNames);
var templateCriteria = new MvcTextTemplateCriteria() {
TemplateLanguage = MvcTextTemplateLanguage.CSharp,
TemplateType = MvcTextTemplateType.Razor
};
List<MvcViewTextTemplate> templates = repository.GetMvcViewTextTemplates(templateCriteria).ToList();
var expectedTemplate1 = new MvcViewTextTemplate() {
Name = "B",
FileName = templateFileNames[0]
};
var expectedTemplate2 = new MvcViewTextTemplate() {
Name = "A",
FileName = templateFileNames[1]
};
var expectedTemplates = new MvcViewTextTemplate[] {
expectedTemplate1,
expectedTemplate2
};
MvcViewTextTemplateCollectionAssert.AreEqual(expectedTemplates, templates);
}
}
}