Files
Umbraco-CMS/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs

348 lines
8.3 KiB
C#
Raw Normal View History

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Umbraco.Core;
2012-09-13 13:38:51 +07:00
using Umbraco.Core.Dynamics;
using Umbraco.Tests.TestHelpers;
namespace Umbraco.Tests.DynamicDocument
{
[TestFixture]
public abstract class DynamicDocumentTestsBase<TDocument, TDocumentList> : BaseWebTest
{
2012-09-13 13:38:51 +07:00
public override void Initialize()
{
base.Initialize();
2012-09-13 13:38:51 +07:00
}
public override void TearDown()
{
base.TearDown();
2012-09-13 13:38:51 +07:00
}
protected override bool RequiresDbSetup
{
get { return false; }
}
2012-09-13 13:38:51 +07:00
/// <summary>
/// Returns the dynamic node/document to run tests against
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
protected abstract dynamic GetDynamicNode(int id);
[Test]
public void Children_Order_By_Update_Date()
{
var asDynamic = GetDynamicNode(1173);
var ordered = asDynamic.Children.OrderBy("UpdateDate");
var casted = (IEnumerable<TDocument>)ordered;
var correctOrder = new[] { 1178, 1177, 1174, 1176 };
for (var i = 0; i < correctOrder.Length ;i++)
{
Assert.AreEqual(correctOrder[i], ((dynamic)casted.ElementAt(i)).Id);
}
}
[Test]
public void HasProperty()
{
var asDynamic = GetDynamicNode(1173);
var hasProp = asDynamic.HasProperty("umbracoUrlAlias");
Assert.AreEqual(true, (bool)hasProp);
}
[Test]
public void Skip()
{
var asDynamic = GetDynamicNode(1173);
var skip = asDynamic.Children.Skip(2);
var casted = (IEnumerable<TDocument>)skip;
Assert.AreEqual(2, casted.Count());
Assert.IsTrue(casted.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[]{1177, 1178}));
}
[Test]
public void HasValue()
{
var asDynamic = GetDynamicNode(1173);
var hasValue = asDynamic.HasValue("umbracoUrlAlias");
var noValue = asDynamic.HasValue("blahblahblah");
Assert.IsTrue(hasValue);
Assert.IsFalse(noValue);
}
[Test]
public void Take()
{
var asDynamic = GetDynamicNode(1173);
var take = asDynamic.Children.Take(2);
var casted = (IEnumerable<TDocument>)take;
Assert.AreEqual(2, casted.Count());
Assert.IsTrue(casted.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1174, 1176 }));
}
[Test]
public void Ancestors_Where_Visible()
{
var asDynamic = GetDynamicNode(1174);
var whereVisible = asDynamic.Ancestors().Where("Visible");
var casted = (IEnumerable<TDocument>)whereVisible;
Assert.AreEqual(1, casted.Count());
}
[Test]
public void Visible()
{
var asDynamicHidden = GetDynamicNode(1046);
var asDynamicVisible = GetDynamicNode(1173);
Assert.IsFalse(asDynamicHidden.Visible);
Assert.IsTrue(asDynamicVisible.Visible);
}
[Test]
public void Ensure_TinyMCE_Converted_Type_User_Property()
{
var asDynamic = GetDynamicNode(1173);
Assert.IsTrue(TypeHelper.IsTypeAssignableFrom<IHtmlString>(asDynamic.Content.GetType()));
Assert.AreEqual("<div>This is some content</div>", asDynamic.Content.ToString());
}
[Test]
public void Get_Children_With_Pluralized_Alias()
{
var asDynamic = GetDynamicNode(1173);
Action<object> doAssert = d =>
{
Assert.IsTrue(TypeHelper.IsTypeAssignableFrom<IEnumerable>(d));
var casted = (IEnumerable<TDocument>)d;
Assert.AreEqual(2, casted.Count());
};
doAssert(asDynamic.Homes); //pluralized alias
doAssert(asDynamic.homes); //pluralized alias
doAssert(asDynamic.CustomDocuments); //pluralized alias
doAssert(asDynamic.customDocuments); //pluralized alias
}
[Test]
public void GetPropertyValue_Non_Reflected()
{
var asDynamic = GetDynamicNode(1174);
Assert.AreEqual("Custom data with same property name as the member name", asDynamic.GetPropertyValue("creatorName"));
Assert.AreEqual("Custom data with same property name as the member name", asDynamic.GetPropertyValue("CreatorName"));
}
[Test]
public void GetPropertyValue_Reflected()
{
var asDynamic = GetDynamicNode(1174);
Assert.AreEqual("admin", asDynamic.GetPropertyValue("@creatorName"));
Assert.AreEqual("admin", asDynamic.GetPropertyValue("@CreatorName"));
}
[Test]
public void Get_User_Property_With_Same_Name_As_Member_Property()
{
var asDynamic = GetDynamicNode(1174);
Assert.AreEqual("Custom data with same property name as the member name", asDynamic.creatorName);
//because CreatorName is defined on DynamicNode, it will not return the user defined property
Assert.AreEqual("admin", asDynamic.CreatorName);
}
[Test]
public void Get_Member_Property()
{
var asDynamic = GetDynamicNode(1173);
Assert.AreEqual((int) 2, (int) asDynamic.Level);
Assert.AreEqual((int) 2, (int) asDynamic.level);
Assert.AreEqual((int) 1046, (int) asDynamic.ParentId);
Assert.AreEqual((int) 1046, (int) asDynamic.parentId);
}
[Test]
public void Get_Children()
{
var asDynamic = GetDynamicNode(1173);
var children = asDynamic.Children;
Assert.IsTrue(TypeHelper.IsTypeAssignableFrom<IEnumerable>(children));
var childrenAsList = asDynamic.ChildrenAsList; //test ChildrenAsList too
Assert.IsTrue(TypeHelper.IsTypeAssignableFrom<IEnumerable>(childrenAsList));
var castChildren = (IEnumerable<TDocument>)children;
Assert.AreEqual(4, castChildren.Count());
var castChildrenAsList = (IEnumerable<TDocument>)childrenAsList;
Assert.AreEqual(4, castChildrenAsList.Count());
}
[Test]
public void Ancestor_Or_Self()
{
var asDynamic = GetDynamicNode(1173);
var result = asDynamic.AncestorOrSelf();
Assert.IsNotNull(result);
Assert.AreEqual((int) 1046, (int) result.Id);
}
[Test]
public void Ancestors_Or_Self()
{
var asDynamic = GetDynamicNode(1174);
var result = asDynamic.AncestorsOrSelf();
Assert.IsNotNull(result);
var list = (IEnumerable<TDocument>)result;
Assert.AreEqual(3, list.Count());
Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1174, 1173, 1046 }));
}
[Test]
public void Ancestors()
{
var asDynamic = GetDynamicNode(1174);
var result = asDynamic.Ancestors();
Assert.IsNotNull(result);
var list = (IEnumerable<TDocument>)result;
Assert.AreEqual(2, list.Count());
Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1173, 1046 }));
}
[Test]
public void Descendants_Or_Self()
{
var asDynamic = GetDynamicNode(1046);
var result = asDynamic.DescendantsOrSelf();
Assert.IsNotNull(result);
var list = (IEnumerable<TDocument>)result;
Assert.AreEqual(7, list.Count());
Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1046, 1173, 1174, 1176, 1175 }));
}
[Test]
public void Descendants()
{
var asDynamic = GetDynamicNode(1046);
var result = asDynamic.Descendants();
Assert.IsNotNull(result);
var list = (IEnumerable<TDocument>)result;
Assert.AreEqual(6, list.Count());
Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1173, 1174, 1176, 1175 }));
}
[Test]
public void Up()
{
var asDynamic = GetDynamicNode(1173);
var result = asDynamic.Up();
Assert.IsNotNull(result);
Assert.AreEqual((int) 1046, (int) result.Id);
}
[Test]
public void Down()
{
var asDynamic = GetDynamicNode(1173);
var result = asDynamic.Down();
Assert.IsNotNull(result);
Assert.AreEqual((int) 1174, (int) result.Id);
}
[Test]
public void Next()
{
var asDynamic = GetDynamicNode(1173);
var result = asDynamic.Next();
Assert.IsNotNull(result);
Assert.AreEqual((int) 1175, (int) result.Id);
}
[Test]
public void Next_Without_Sibling()
{
var asDynamic = GetDynamicNode(1178);
Assert.IsNull(asDynamic.Next());
}
[Test]
public void Previous_Without_Sibling()
{
var asDynamic = GetDynamicNode(1173);
Assert.IsNull(asDynamic.Previous());
}
[Test]
public void Previous()
{
var asDynamic = GetDynamicNode(1176);
var result = asDynamic.Previous();
Assert.IsNotNull(result);
Assert.AreEqual((int) 1174, (int) result.Id);
}
}
}