Files
Umbraco-CMS/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs
sitereactor 278d3087a4 Removing Service- and DatabaseContexts from UmbracoContext as its not the proper place to have them.
Adding extension method to ApplicationContext to attach the two contexts here instead.
Refactoring BaseWhereClause as there were problems formatting the sql.
Adding unit tests for MacroRepository and ContentRepository.
2012-11-05 09:03:48 -01:00

190 lines
7.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Caching;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Tests.Persistence.Repositories
{
[TestFixture]
public class MacroRepositoryTest
{
[Test]
public void Can_Instantiate_Repository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
// Act
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
// Assert
Assert.That(repository, Is.Not.Null);
}
[Test]
public void Cant_Find_Macro_File()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
// Act
bool exists = repository.Exists("commentList");
// Assert
Assert.That(exists, Is.False);
}
[Test]
public void Can_Verify_Macro_File_Exists()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
// Act
bool exists = repository.Exists("testMacro");
// Assert
Assert.That(exists, Is.True);
}
[Test]
public void Can_Perform_Add_On_MacroRepository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
// Act
var macro = new Macro { Alias = "testMacro", CacheByPage = false, CacheByMember = false, DontRender = true, Name = "Test Macro", Xslt = "/xslt/testMacro.xslt", UseInEditor = false };
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
repository.AddOrUpdate(macro);
unitOfWork.Commit();
// Assert
Assert.That(macro.CreateDate, Is.GreaterThan(DateTime.MinValue));
Assert.That(macro.UpdateDate, Is.GreaterThan(DateTime.MinValue));
}
[Test]
public void Can_Perform_Update_On_MacroRepository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
var macro = CreateMacro("updateMacro", "Update Macro");
repository.AddOrUpdate(macro);
unitOfWork.Commit();
// Act
var macro1 = repository.Get("updateMacro");
macro1.Xslt = "/xslt/updateTestMacro.xslt";
repository.AddOrUpdate(macro1);
unitOfWork.Commit();
var macro2 = repository.Get("updateMacro");
// Assert
Assert.That(macro2.CreateDate, Is.EqualTo(macro.CreateDate));
//Assert.That(macro2.ModifiedDate, Is.GreaterThan(macro.ModifiedDate));
Assert.That(macro2.Xslt, Is.EqualTo("/xslt/updateTestMacro.xslt"));
}
[Test]
public void Can_Perform_Delete_On_MacroRepository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
var macro = CreateMacro("deleteMacro", "Delete Macro");
repository.AddOrUpdate(macro);
unitOfWork.Commit();
// Act
repository.Delete(macro);
unitOfWork.Commit();
var exists = repository.Exists("deleteMacro");
// Assert
Assert.That(exists, Is.False);
}
[Test]
public void Can_Perform_Get_On_MacroRepository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
var macro = CreateMacro("getMacro", "Get Macro");
repository.AddOrUpdate(macro);
unitOfWork.Commit();
// Act
var unitOfWork2 = provider.GetUnitOfWork();
var repository2 = new MacroRepository(unitOfWork2, InMemoryCacheProvider.Current);
var macro1 = repository2.Get("getMacro");
// Assert
Assert.That(macro1.CreateDate, Is.GreaterThan(DateTime.MinValue));
Assert.That(macro1.UpdateDate, Is.GreaterThan(DateTime.MinValue));
Assert.That(macro1.Name, Is.EqualTo("Get Macro"));
Assert.That(macro1.Properties.Any(), Is.True);
Assert.That(macro1.Properties.Count, Is.EqualTo(2));
}
[Test]
public void Can_Perform_GetAll_On_MacroRepository()
{
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new MacroRepository(unitOfWork, InMemoryCacheProvider.Current);
// Act
var macros = repository.GetAll();
var list = macros.ToList();
// Assert
Assert.That(list.Any(), Is.True);
Assert.That(list.Any(x => x == null), Is.False);
Assert.That(list.Count(), Is.GreaterThan(1));
Assert.That(list.Any(x => x.Alias == "getMacro"), Is.True);
Assert.That(list.Any(x => x.Alias == "testMacro"), Is.True);
}
private IMacro CreateMacro(string alias, string name)
{
var macro = new Macro
{
Alias = alias,
CacheByPage = false,
CacheByMember = false,
DontRender = true,
Name = name,
Xslt = "/xslt/testMacro.xslt",
UseInEditor = false
};
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });
return macro;
}
}
}