#3305 - Uncommented irrelevant tests. These tests are irrelevant because they use the legacy XmlPublishedContent and not the NuCache

This commit is contained in:
Bjarke Berg
2019-01-16 08:08:13 +01:00
parent 5687287453
commit c71f438e62
3 changed files with 617 additions and 617 deletions

View File

@@ -1,78 +1,78 @@
//using System;
//using System.Collections.Generic;
//using System.Collections.ObjectModel;
//using System.Linq;
//using Moq;
//using NUnit.Framework;
//using Umbraco.Core;
//using Umbraco.Core.Composing;
//using Umbraco.Core.Logging;
//using Umbraco.Core.Models;
//using Umbraco.Core.Models.PublishedContent;
//using Umbraco.Core.PropertyEditors;
//using Umbraco.Core.Services;
//using Umbraco.Tests.TestHelpers;
//using Umbraco.Web;
//
//namespace Umbraco.Tests.PublishedContent
//{
// /// <summary>
// /// Unit tests for IPublishedContent and extensions
// /// </summary>
// [TestFixture]
// public class PublishedContentDataTableTests : BaseWebTest
// {
// public override void SetUp()
// {
// base.SetUp();
//
// // need to specify a different callback for testing
// PublishedContentExtensions.GetPropertyAliasesAndNames = (services, alias) =>
// {
// var userFields = new Dictionary<string, string>()
// {
// {"property1", "Property 1"},
// {"property2", "Property 2"}
// };
// if (alias == "Child")
// {
// userFields.Add("property4", "Property 4");
// }
// else
// {
// userFields.Add("property3", "Property 3");
// }
//
// //ensure the standard fields are there
// var allFields = new Dictionary<string, string>()
// {
// {"Id", "Id"},
// {"NodeName", "NodeName"},
// {"NodeTypeAlias", "NodeTypeAlias"},
// {"CreateDate", "CreateDate"},
// {"UpdateDate", "UpdateDate"},
// {"CreatorName", "CreatorName"},
// {"WriterName", "WriterName"},
// {"Url", "Url"}
// };
// foreach (var f in userFields.Where(f => !allFields.ContainsKey(f.Key)))
// {
// allFields.Add(f.Key, f.Value);
// }
// return allFields;
// };
// var umbracoContext = GetUmbracoContext("/test");
//
// //set the UmbracoContext.Current since the extension methods rely on it
// Umbraco.Web.Composing.Current.UmbracoContextAccessor.UmbracoContext = umbracoContext;
// }
//
// public override void TearDown()
// {
// base.TearDown();
// Umbraco.Web.PublishedContentExtensions.GetPropertyAliasesAndNames = null;
// }
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
namespace Umbraco.Tests.PublishedContent
{
/// <summary>
/// Unit tests for IPublishedContent and extensions
/// </summary>
[TestFixture]
public class PublishedContentDataTableTests : BaseWebTest
{
public override void SetUp()
{
base.SetUp();
// need to specify a different callback for testing
PublishedContentExtensions.GetPropertyAliasesAndNames = (services, alias) =>
{
var userFields = new Dictionary<string, string>()
{
{"property1", "Property 1"},
{"property2", "Property 2"}
};
if (alias == "Child")
{
userFields.Add("property4", "Property 4");
}
else
{
userFields.Add("property3", "Property 3");
}
//ensure the standard fields are there
var allFields = new Dictionary<string, string>()
{
{"Id", "Id"},
{"NodeName", "NodeName"},
{"NodeTypeAlias", "NodeTypeAlias"},
{"CreateDate", "CreateDate"},
{"UpdateDate", "UpdateDate"},
{"CreatorName", "CreatorName"},
{"WriterName", "WriterName"},
{"Url", "Url"}
};
foreach (var f in userFields.Where(f => !allFields.ContainsKey(f.Key)))
{
allFields.Add(f.Key, f.Value);
}
return allFields;
};
var umbracoContext = GetUmbracoContext("/test");
//set the UmbracoContext.Current since the extension methods rely on it
Umbraco.Web.Composing.Current.UmbracoContextAccessor.UmbracoContext = umbracoContext;
}
public override void TearDown()
{
base.TearDown();
Umbraco.Web.PublishedContentExtensions.GetPropertyAliasesAndNames = null;
}
// [Test]
// public void To_DataTable()
// {
@@ -91,7 +91,7 @@
// Assert.AreEqual("value11", dt.Rows[2]["Property 2"]);
// Assert.AreEqual("value12", dt.Rows[2]["Property 4"]);
// }
//
// [Test]
// public void To_DataTable_With_Filter()
// {
@@ -111,138 +111,138 @@
// Assert.AreEqual("value11", dt.Rows[1]["Property 2"]);
// Assert.AreEqual("value12", dt.Rows[1]["Property 4"]);
// }
//
// [Test]
// public void To_DataTable_No_Rows()
// {
// var doc = GetContent(false, 1);
// var dt = doc.ChildrenAsTable(Current.Services);
// //will return an empty data table
// Assert.AreEqual(0, dt.Columns.Count);
// Assert.AreEqual(0, dt.Rows.Count);
// }
//
// private IPublishedContent GetContent(bool createChildren, int indexVals)
// {
// var dataTypeService = new TestObjects.TestDataTypeService(
// new DataType(new VoidEditor(Mock.Of<ILogger>())) { Id = 1 });
//
// var factory = new PublishedContentTypeFactory(Mock.Of<IPublishedModelFactory>(), new PropertyValueConverterCollection(Array.Empty<IPropertyValueConverter>()), dataTypeService);
// var contentTypeAlias = createChildren ? "Parent" : "Child";
// var d = new TestPublishedContent
// {
// CreateDate = DateTime.Now,
// CreatorId = 1,
// CreatorName = "Shannon",
// Id = 3,
// SortOrder = 4,
// TemplateId = 5,
// UpdateDate = DateTime.Now,
// Path = "-1,3",
// UrlSegment = "home-page",
// Name = "Page" + Guid.NewGuid().ToString(),
// Version = Guid.NewGuid(),
// WriterId = 1,
// WriterName = "Shannon",
// Parent = null,
// Level = 1,
// Children = new List<IPublishedContent>()
// };
// d.Properties = new Collection<IPublishedProperty>(new List<IPublishedProperty>
// {
// new RawValueProperty(factory.CreatePropertyType("property1", 1), d, "value" + indexVals),
// new RawValueProperty(factory.CreatePropertyType("property2", 1), d, "value" + (indexVals + 1))
// });
// if (createChildren)
// {
// d.Children = new List<IPublishedContent>()
// {
// GetContent(false, indexVals + 3),
// GetContent(false, indexVals + 6),
// GetContent(false, indexVals + 9)
// };
// }
//
// if (!createChildren)
// {
// //create additional columns, used to test the different columns for child nodes
// ((Collection<IPublishedProperty>) d.Properties).Add(
// new RawValueProperty(factory.CreatePropertyType("property4",1), d, "value" + (indexVals + 2)));
// }
// else
// {
// ((Collection<IPublishedProperty>) d.Properties).Add(
// new RawValueProperty(factory.CreatePropertyType("property3", 1), d, "value" + (indexVals + 2)));
// }
//
// d.ContentType = new PublishedContentType(22, contentTypeAlias, PublishedItemType.Content, Enumerable.Empty<string>(), Enumerable.Empty<PublishedPropertyType>(), ContentVariation.Nothing);
// return d;
// }
//
// // note - could probably rewrite those tests using SolidPublishedContentCache
// // l8tr...
// private class TestPublishedContent : IPublishedContent
// {
// public string Url { get; set; }
// public string GetUrl(string culture = null) => throw new NotSupportedException();
//
// public PublishedItemType ItemType { get; set; }
//
// IPublishedContent IPublishedContent.Parent
// {
// get { return Parent; }
// }
//
// IEnumerable<IPublishedContent> IPublishedContent.Children
// {
// get { return Children; }
// }
//
// public IPublishedContent Parent { get; set; }
// public int Id { get; set; }
// public Guid Key { get; set; }
// public int? TemplateId { get; set; }
// public int SortOrder { get; set; }
// public string Name { get; set; }
// public PublishedCultureInfo GetCulture(string culture = null) => throw new NotSupportedException();
// public IReadOnlyDictionary<string, PublishedCultureInfo> Cultures => throw new NotSupportedException();
// public string UrlSegment { get; set; }
// public string WriterName { get; set; }
// public string CreatorName { get; set; }
// public int WriterId { get; set; }
// public int CreatorId { get; set; }
// public string Path { get; set; }
// public DateTime CreateDate { get; set; }
// public DateTime UpdateDate { get; set; }
// public Guid Version { get; set; }
// public int Level { get; set; }
// public bool IsDraft(string culture = null) => false;
//
// public IEnumerable<IPublishedProperty> Properties { get; set; }
//
// public IEnumerable<IPublishedContent> Children { get; set; }
//
// public IPublishedProperty GetProperty(string alias)
// {
// return Properties.FirstOrDefault(x => x.Alias.InvariantEquals(alias));
// }
//
// public IPublishedProperty GetProperty(string alias, bool recurse)
// {
// var property = GetProperty(alias);
// if (recurse == false) return property;
//
// IPublishedContent content = this;
// while (content != null && (property == null || property.HasValue() == false))
// {
// content = content.Parent;
// property = content == null ? null : content.GetProperty(alias);
// }
//
// return property;
// }
//
// public PublishedContentType ContentType { get; set; }
// }
// }
//}
[Test]
public void To_DataTable_No_Rows()
{
var doc = GetContent(false, 1);
var dt = doc.ChildrenAsTable(Current.Services);
//will return an empty data table
Assert.AreEqual(0, dt.Columns.Count);
Assert.AreEqual(0, dt.Rows.Count);
}
private IPublishedContent GetContent(bool createChildren, int indexVals)
{
var dataTypeService = new TestObjects.TestDataTypeService(
new DataType(new VoidEditor(Mock.Of<ILogger>())) { Id = 1 });
var factory = new PublishedContentTypeFactory(Mock.Of<IPublishedModelFactory>(), new PropertyValueConverterCollection(Array.Empty<IPropertyValueConverter>()), dataTypeService);
var contentTypeAlias = createChildren ? "Parent" : "Child";
var d = new TestPublishedContent
{
CreateDate = DateTime.Now,
CreatorId = 1,
CreatorName = "Shannon",
Id = 3,
SortOrder = 4,
TemplateId = 5,
UpdateDate = DateTime.Now,
Path = "-1,3",
UrlSegment = "home-page",
Name = "Page" + Guid.NewGuid().ToString(),
Version = Guid.NewGuid(),
WriterId = 1,
WriterName = "Shannon",
Parent = null,
Level = 1,
Children = new List<IPublishedContent>()
};
d.Properties = new Collection<IPublishedProperty>(new List<IPublishedProperty>
{
new RawValueProperty(factory.CreatePropertyType("property1", 1), d, "value" + indexVals),
new RawValueProperty(factory.CreatePropertyType("property2", 1), d, "value" + (indexVals + 1))
});
if (createChildren)
{
d.Children = new List<IPublishedContent>()
{
GetContent(false, indexVals + 3),
GetContent(false, indexVals + 6),
GetContent(false, indexVals + 9)
};
}
if (!createChildren)
{
//create additional columns, used to test the different columns for child nodes
((Collection<IPublishedProperty>) d.Properties).Add(
new RawValueProperty(factory.CreatePropertyType("property4",1), d, "value" + (indexVals + 2)));
}
else
{
((Collection<IPublishedProperty>) d.Properties).Add(
new RawValueProperty(factory.CreatePropertyType("property3", 1), d, "value" + (indexVals + 2)));
}
d.ContentType = new PublishedContentType(22, contentTypeAlias, PublishedItemType.Content, Enumerable.Empty<string>(), Enumerable.Empty<PublishedPropertyType>(), ContentVariation.Nothing);
return d;
}
// note - could probably rewrite those tests using SolidPublishedContentCache
// l8tr...
private class TestPublishedContent : IPublishedContent
{
public string Url { get; set; }
public string GetUrl(string culture = null) => throw new NotSupportedException();
public PublishedItemType ItemType { get; set; }
IPublishedContent IPublishedContent.Parent
{
get { return Parent; }
}
IEnumerable<IPublishedContent> IPublishedContent.Children
{
get { return Children; }
}
public IPublishedContent Parent { get; set; }
public int Id { get; set; }
public Guid Key { get; set; }
public int? TemplateId { get; set; }
public int SortOrder { get; set; }
public string Name { get; set; }
public PublishedCultureInfo GetCulture(string culture = null) => throw new NotSupportedException();
public IReadOnlyDictionary<string, PublishedCultureInfo> Cultures => throw new NotSupportedException();
public string UrlSegment { get; set; }
public string WriterName { get; set; }
public string CreatorName { get; set; }
public int WriterId { get; set; }
public int CreatorId { get; set; }
public string Path { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
public Guid Version { get; set; }
public int Level { get; set; }
public bool IsDraft(string culture = null) => false;
public IEnumerable<IPublishedProperty> Properties { get; set; }
public IEnumerable<IPublishedContent> Children { get; set; }
public IPublishedProperty GetProperty(string alias)
{
return Properties.FirstOrDefault(x => x.Alias.InvariantEquals(alias));
}
public IPublishedProperty GetProperty(string alias, bool recurse)
{
var property = GetProperty(alias);
if (recurse == false) return property;
IPublishedContent content = this;
while (content != null && (property == null || property.HasValue() == false))
{
content = content.Parent;
property = content == null ? null : content.GetProperty(alias);
}
return property;
}
public PublishedContentType ContentType { get; set; }
}
}
}

View File

@@ -326,18 +326,18 @@ namespace Umbraco.Tests.PublishedContent
}
}
[Test]
public void Descendants_Ordered_Properly()
{
var doc = GetNode(1046);
var expected = new[] { 1046, 1173, 1174, 117, 1177, 1178, 1179, 1176, 1175, 4444, 1172 };
var exindex = 0;
// must respect the XPath descendants-or-self axis!
foreach (var d in doc.DescendantsOrSelf())
Assert.AreEqual(expected[exindex++], d.Id);
}
// [Test]
// public void Descendants_Ordered_Properly()
// {
// var doc = GetNode(1046);
//
// var expected = new[] { 1046, 1173, 1174, 117, 1177, 1178, 1179, 1176, 1175, 4444, 1172 };
// var exindex = 0;
//
// // must respect the XPath descendants-or-self axis!
// foreach (var d in doc.DescendantsOrSelf())
// Assert.AreEqual(expected[exindex++], d.Id);
// }
[Test]
public void Get_Property_Value_Recursive()
@@ -367,18 +367,18 @@ namespace Umbraco.Tests.PublishedContent
Assert.AreEqual("<div>This is some content</div>", propVal3.ToString());
}
[Test]
public void Complex_Linq()
{
var doc = GetNode(1173);
var result = doc.Ancestors().OrderBy(x => x.Level)
.Single()
.Descendants()
.FirstOrDefault(x => x.Value<string>("selectedNodes", defaultValue: "").Split(',').Contains("1173"));
Assert.IsNotNull(result);
}
// [Test]
// public void Complex_Linq()
// {
// var doc = GetNode(1173);
//
// var result = doc.Ancestors().OrderBy(x => x.Level)
// .Single()
// .Descendants()
// .FirstOrDefault(x => x.Value<string>("selectedNodes", defaultValue: "").Split(',').Contains("1173"));
//
// Assert.IsNotNull(result);
// }
[Test]
public void Children_GroupBy_DocumentTypeAlias()
@@ -437,36 +437,36 @@ namespace Umbraco.Tests.PublishedContent
}
[Test]
public void FirstChild()
{
var doc = GetNode(1173); // has child nodes
Assert.IsNotNull(doc.FirstChild());
Assert.IsNotNull(doc.FirstChild(x => true));
Assert.IsNotNull(doc.FirstChild<IPublishedContent>());
// [Test]
// public void FirstChild()
// {
// var doc = GetNode(1173); // has child nodes
// Assert.IsNotNull(doc.FirstChild());
// Assert.IsNotNull(doc.FirstChild(x => true));
// Assert.IsNotNull(doc.FirstChild<IPublishedContent>());
//
// doc = GetNode(1175); // does not have child nodes
// Assert.IsNull(doc.FirstChild());
// Assert.IsNull(doc.FirstChild(x => true));
// Assert.IsNull(doc.FirstChild<IPublishedContent>());
// }
doc = GetNode(1175); // does not have child nodes
Assert.IsNull(doc.FirstChild());
Assert.IsNull(doc.FirstChild(x => true));
Assert.IsNull(doc.FirstChild<IPublishedContent>());
}
[Test]
public void FirstChildAsT()
{
var doc = GetNode(1046); // has child nodes
var model = doc.FirstChild<Home>(x => true); // predicate
Assert.IsNotNull(model);
Assert.IsTrue(model.Id == 1173);
Assert.IsInstanceOf<Home>(model);
Assert.IsInstanceOf<IPublishedContent>(model);
doc = GetNode(1175); // does not have child nodes
Assert.IsNull(doc.FirstChild<Anything>());
Assert.IsNull(doc.FirstChild<Anything>(x => true));
}
// [Test]
// public void FirstChildAsT()
// {
// var doc = GetNode(1046); // has child nodes
//
// var model = doc.FirstChild<Home>(x => true); // predicate
//
// Assert.IsNotNull(model);
// Assert.IsTrue(model.Id == 1173);
// Assert.IsInstanceOf<Home>(model);
// Assert.IsInstanceOf<IPublishedContent>(model);
//
// doc = GetNode(1175); // does not have child nodes
// Assert.IsNull(doc.FirstChild<Anything>());
// Assert.IsNull(doc.FirstChild<Anything>(x => true));
// }
[Test]
public void IsComposedOf()
@@ -668,31 +668,31 @@ namespace Umbraco.Tests.PublishedContent
}
[Test]
public void Descendants_Or_Self()
{
var doc = GetNode(1046);
var result = doc.DescendantsOrSelf().ToArray();
Assert.IsNotNull(result);
Assert.AreEqual(10, result.Count());
Assert.IsTrue(result.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1046, 1173, 1174, 1176, 1175 }));
}
[Test]
public void Descendants()
{
var doc = GetNode(1046);
var result = doc.Descendants().ToArray();
Assert.IsNotNull(result);
Assert.AreEqual(9, result.Count());
Assert.IsTrue(result.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1173, 1174, 1176, 1175, 4444 }));
}
// [Test]
// public void Descendants_Or_Self()
// {
// var doc = GetNode(1046);
//
// var result = doc.DescendantsOrSelf().ToArray();
//
// Assert.IsNotNull(result);
//
// Assert.AreEqual(10, result.Count());
// Assert.IsTrue(result.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1046, 1173, 1174, 1176, 1175 }));
// }
//
// [Test]
// public void Descendants()
// {
// var doc = GetNode(1046);
//
// var result = doc.Descendants().ToArray();
//
// Assert.IsNotNull(result);
//
// Assert.AreEqual(9, result.Count());
// Assert.IsTrue(result.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1173, 1174, 1176, 1175, 4444 }));
// }
[Test]
public void IsDescendant()

View File

@@ -1,113 +1,113 @@
//using System.Web;
//using System.Xml.Linq;
//using System.Xml.XPath;
//using NUnit.Framework;
//using Umbraco.Core;
//using Umbraco.Core.Models;
//using Umbraco.Tests.TestHelpers;
//using Umbraco.Tests.TestHelpers.Entities;
//using Umbraco.Tests.UmbracoExamine;
//using Umbraco.Web;
//using Umbraco.Web.PublishedCache.XmlPublishedCache;
//using System.Linq;
//using System.Threading;
//using System.Xml;
//using Examine;
//using Umbraco.Core.Cache;
//using Umbraco.Core.Models.PublishedContent;
//using Umbraco.Core.Strings;
//using Umbraco.Examine;
//using Current = Umbraco.Web.Composing.Current;
//using Umbraco.Tests.Testing;
//using Umbraco.Core.Composing;
//using Umbraco.Core.Models.Membership;
//using Umbraco.Core.PropertyEditors;
//
//namespace Umbraco.Tests.PublishedContent
//{
// /// <summary>
// /// Tests the typed extension methods on IPublishedContent using the DefaultPublishedMediaStore
// /// </summary>
// [TestFixture]
// [Apartment(ApartmentState.STA)]
// [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, WithApplication = true)]
// public class PublishedMediaTests : PublishedContentTestBase
// {
// /// <summary>
// /// sets up resolvers before resolution is frozen
// /// </summary>
// protected override void Compose()
// {
// base.Compose();
//
// Composition.WithCollectionBuilder<UrlSegmentProviderCollectionBuilder>()
// .Clear()
// .Append<DefaultUrlSegmentProvider>();
// }
//
// private IMediaType MakeNewMediaType(IUser user, string text, int parentId = -1)
// {
// var mt = new MediaType(parentId) { Name = text, Alias = text, Thumbnail = "icon-folder", Icon = "icon-folder" };
// ServiceContext.MediaTypeService.Save(mt);
// return mt;
// }
//
// private IMedia MakeNewMedia(string name, IMediaType mediaType, IUser user, int parentId)
// {
// var m = ServiceContext.MediaService.CreateMediaWithIdentity(name, parentId, mediaType.Alias);
// return m;
// }
//
// /// <summary>
// /// Shared with PublishMediaStoreTests
// /// </summary>
// /// <param name="id"></param>
// /// <param name="umbracoContext"></param>
// /// <returns></returns>
// internal IPublishedContent GetNode(int id, UmbracoContext umbracoContext)
// {
// var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), Current.Services.MediaService, Current.Services.UserService, new StaticCacheProvider(), ContentTypesCache);
// var doc = cache.GetById(id);
// Assert.IsNotNull(doc);
// return doc;
// }
//
// private IPublishedContent GetNode(int id)
// {
// return GetNode(id, GetUmbracoContext("/test"));
// }
//
// [Test]
// public void Get_Property_Value_Uses_Converter()
// {
// var mType = MockedContentTypes.CreateImageMediaType("image2");
// //lets add an RTE to this
// mType.PropertyGroups.First().PropertyTypes.Add(
// new PropertyType("test", ValueStorageType.Nvarchar, "content")
// {
// Name = "Rich Text",
// DataTypeId = -87 //tiny mce
// });
// ServiceContext.MediaTypeService.Save(mType);
// var media = MockedMedia.CreateMediaImage(mType, -1);
// media.Properties["content"].SetValue("<div>This is some content</div>");
// ServiceContext.MediaService.Save(media);
//
// var publishedMedia = GetNode(media.Id);
//
// var propVal = publishedMedia.Value("content");
// Assert.IsInstanceOf<IHtmlString>(propVal);
// Assert.AreEqual("<div>This is some content</div>", propVal.ToString());
//
// var propVal2 = publishedMedia.Value<IHtmlString>("content");
// Assert.IsInstanceOf<IHtmlString>(propVal2);
// Assert.AreEqual("<div>This is some content</div>", propVal2.ToString());
//
// var propVal3 = publishedMedia.Value("Content");
// Assert.IsInstanceOf<IHtmlString>(propVal3);
// Assert.AreEqual("<div>This is some content</div>", propVal3.ToString());
// }
//
using System.Web;
using System.Xml.Linq;
using System.Xml.XPath;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
using Umbraco.Tests.UmbracoExamine;
using Umbraco.Web;
using Umbraco.Web.PublishedCache.XmlPublishedCache;
using System.Linq;
using System.Threading;
using System.Xml;
using Examine;
using Umbraco.Core.Cache;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Strings;
using Umbraco.Examine;
using Current = Umbraco.Web.Composing.Current;
using Umbraco.Tests.Testing;
using Umbraco.Core.Composing;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Tests.PublishedContent
{
/// <summary>
/// Tests the typed extension methods on IPublishedContent using the DefaultPublishedMediaStore
/// </summary>
[TestFixture]
[Apartment(ApartmentState.STA)]
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, WithApplication = true)]
public class PublishedMediaTests : PublishedContentTestBase
{
/// <summary>
/// sets up resolvers before resolution is frozen
/// </summary>
protected override void Compose()
{
base.Compose();
Composition.WithCollectionBuilder<UrlSegmentProviderCollectionBuilder>()
.Clear()
.Append<DefaultUrlSegmentProvider>();
}
private IMediaType MakeNewMediaType(IUser user, string text, int parentId = -1)
{
var mt = new MediaType(parentId) { Name = text, Alias = text, Thumbnail = "icon-folder", Icon = "icon-folder" };
ServiceContext.MediaTypeService.Save(mt);
return mt;
}
private IMedia MakeNewMedia(string name, IMediaType mediaType, IUser user, int parentId)
{
var m = ServiceContext.MediaService.CreateMediaWithIdentity(name, parentId, mediaType.Alias);
return m;
}
/// <summary>
/// Shared with PublishMediaStoreTests
/// </summary>
/// <param name="id"></param>
/// <param name="umbracoContext"></param>
/// <returns></returns>
internal IPublishedContent GetNode(int id, UmbracoContext umbracoContext)
{
var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), Current.Services.MediaService, Current.Services.UserService, new StaticCacheProvider(), ContentTypesCache);
var doc = cache.GetById(id);
Assert.IsNotNull(doc);
return doc;
}
private IPublishedContent GetNode(int id)
{
return GetNode(id, GetUmbracoContext("/test"));
}
[Test]
public void Get_Property_Value_Uses_Converter()
{
var mType = MockedContentTypes.CreateImageMediaType("image2");
//lets add an RTE to this
mType.PropertyGroups.First().PropertyTypes.Add(
new PropertyType("test", ValueStorageType.Nvarchar, "content")
{
Name = "Rich Text",
DataTypeId = -87 //tiny mce
});
ServiceContext.MediaTypeService.Save(mType);
var media = MockedMedia.CreateMediaImage(mType, -1);
media.Properties["content"].SetValue("<div>This is some content</div>");
ServiceContext.MediaService.Save(media);
var publishedMedia = GetNode(media.Id);
var propVal = publishedMedia.Value("content");
Assert.IsInstanceOf<IHtmlString>(propVal);
Assert.AreEqual("<div>This is some content</div>", propVal.ToString());
var propVal2 = publishedMedia.Value<IHtmlString>("content");
Assert.IsInstanceOf<IHtmlString>(propVal2);
Assert.AreEqual("<div>This is some content</div>", propVal2.ToString());
var propVal3 = publishedMedia.Value("Content");
Assert.IsInstanceOf<IHtmlString>(propVal3);
Assert.AreEqual("<div>This is some content</div>", propVal3.ToString());
}
// [Test]
// public void Ensure_Children_Sorted_With_Examine()
// {
@@ -136,55 +136,55 @@
// }
// }
// }
//
// [Test]
// public void Do_Not_Find_In_Recycle_Bin()
// {
// var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
//
// using (var luceneDir = new RandomIdRamDirectory())
// using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
// //include unpublished content since this uses the 'internal' indexer, it's up to the media cache to filter
// validator: new ContentValueSetValidator(false)))
// using (indexer.ProcessNonAsync())
// {
// rebuilder.RegisterIndex(indexer.Name);
// rebuilder.Populate(indexer);
//
// var searcher = indexer.GetSearcher();
// var ctx = GetUmbracoContext("/test");
// var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//
// //ensure it is found
// var publishedMedia = cache.GetById(3113);
// Assert.IsNotNull(publishedMedia);
//
// //move item to recycle bin
// var newXml = XElement.Parse(@"<node id='3113' key='5b3e46ab-3e37-4cfa-ab70-014234b5bd33' parentID='-21' level='1' writerID='0' nodeType='1032' template='0' sortOrder='2' createDate='2010-05-19T17:32:46' updateDate='2010-05-19T17:32:46' nodeName='Another Umbraco Image' urlName='acnestressscrub' writerName='Administrator' nodeTypeAlias='Image' path='-1,-21,3113'>
// <data alias='umbracoFile'><![CDATA[/media/1234/blah.pdf]]></data>
// <data alias='umbracoWidth'>115</data>
// <data alias='umbracoHeight'>268</data>
// <data alias='umbracoBytes'>10726</data>
// <data alias='umbracoExtension'>jpg</data>
// </node>");
// indexer.IndexItems(new[]{ newXml.ConvertToValueSet("media") });
//
//
// //ensure it still exists in the index (raw examine search)
// var criteria = searcher.CreateQuery();
// var filter = criteria.Id(3113);
// var found = filter.Execute();
// Assert.IsNotNull(found);
// Assert.AreEqual(1, found.TotalItemCount);
//
// //ensure it does not show up in the published media store
// var recycledMedia = cache.GetById(3113);
// Assert.IsNull(recycledMedia);
//
// }
//
// }
//
[Test]
public void Do_Not_Find_In_Recycle_Bin()
{
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
//include unpublished content since this uses the 'internal' indexer, it's up to the media cache to filter
validator: new ContentValueSetValidator(false)))
using (indexer.ProcessNonAsync())
{
rebuilder.RegisterIndex(indexer.Name);
rebuilder.Populate(indexer);
var searcher = indexer.GetSearcher();
var ctx = GetUmbracoContext("/test");
var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//ensure it is found
var publishedMedia = cache.GetById(3113);
Assert.IsNotNull(publishedMedia);
//move item to recycle bin
var newXml = XElement.Parse(@"<node id='3113' key='5b3e46ab-3e37-4cfa-ab70-014234b5bd33' parentID='-21' level='1' writerID='0' nodeType='1032' template='0' sortOrder='2' createDate='2010-05-19T17:32:46' updateDate='2010-05-19T17:32:46' nodeName='Another Umbraco Image' urlName='acnestressscrub' writerName='Administrator' nodeTypeAlias='Image' path='-1,-21,3113'>
<data alias='umbracoFile'><![CDATA[/media/1234/blah.pdf]]></data>
<data alias='umbracoWidth'>115</data>
<data alias='umbracoHeight'>268</data>
<data alias='umbracoBytes'>10726</data>
<data alias='umbracoExtension'>jpg</data>
</node>");
indexer.IndexItems(new[]{ newXml.ConvertToValueSet("media") });
//ensure it still exists in the index (raw examine search)
var criteria = searcher.CreateQuery();
var filter = criteria.Id(3113);
var found = filter.Execute();
Assert.IsNotNull(found);
Assert.AreEqual(1, found.TotalItemCount);
//ensure it does not show up in the published media store
var recycledMedia = cache.GetById(3113);
Assert.IsNull(recycledMedia);
}
}
// [Test]
// public void Children_With_Examine()
// {
@@ -212,7 +212,7 @@
// Assert.IsTrue(subChildren.Select(x => x.Id).ContainsAll(new[] { 2112 }));
// }
// }
//
// [Test]
// public void Descendants_With_Examine()
// {
@@ -240,7 +240,7 @@
// Assert.IsTrue(subDescendants.Select(x => x.Id).ContainsAll(new[] { 2112, 3113 }));
// }
// }
//
// [Test]
// public void DescendantsOrSelf_With_Examine()
// {
@@ -268,58 +268,58 @@
// Assert.IsTrue(subDescendants.Select(x => x.Id).ContainsAll(new[] { 2222, 2112, 3113 }));
// }
// }
//
// [Test]
// public void Ancestors_With_Examine()
// {
// var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
//
//
// using (var luceneDir = new RandomIdRamDirectory())
// using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
// validator: new ContentValueSetValidator(true)))
// using (indexer.ProcessNonAsync())
// {
// rebuilder.RegisterIndex(indexer.Name);
// rebuilder.Populate(indexer);
//
// var ctx = GetUmbracoContext("/test");
// var searcher = indexer.GetSearcher();
// var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//
// //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
// var publishedMedia = cache.GetById(3113);
// var ancestors = publishedMedia.Ancestors();
// Assert.IsTrue(ancestors.Select(x => x.Id).ContainsAll(new[] { 2112, 2222, 1111 }));
// }
//
// }
//
// [Test]
// public void AncestorsOrSelf_With_Examine()
// {
// var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
//
// using (var luceneDir = new RandomIdRamDirectory())
// using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
// validator: new ContentValueSetValidator(true)))
// using (indexer.ProcessNonAsync())
// {
// rebuilder.RegisterIndex(indexer.Name);
// rebuilder.Populate(indexer);
//
//
// var ctx = GetUmbracoContext("/test");
// var searcher = indexer.GetSearcher();
// var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//
// //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
// var publishedMedia = cache.GetById(3113);
// var ancestors = publishedMedia.AncestorsOrSelf();
// Assert.IsTrue(ancestors.Select(x => x.Id).ContainsAll(new[] { 3113, 2112, 2222, 1111 }));
// }
// }
//
[Test]
public void Ancestors_With_Examine()
{
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
rebuilder.RegisterIndex(indexer.Name);
rebuilder.Populate(indexer);
var ctx = GetUmbracoContext("/test");
var searcher = indexer.GetSearcher();
var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
var publishedMedia = cache.GetById(3113);
var ancestors = publishedMedia.Ancestors();
Assert.IsTrue(ancestors.Select(x => x.Id).ContainsAll(new[] { 2112, 2222, 1111 }));
}
}
[Test]
public void AncestorsOrSelf_With_Examine()
{
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
rebuilder.RegisterIndex(indexer.Name);
rebuilder.Populate(indexer);
var ctx = GetUmbracoContext("/test");
var searcher = indexer.GetSearcher();
var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, indexer, new StaticCacheProvider(), ContentTypesCache);
//we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
var publishedMedia = cache.GetById(3113);
var ancestors = publishedMedia.AncestorsOrSelf();
Assert.IsTrue(ancestors.Select(x => x.Id).ContainsAll(new[] { 3113, 2112, 2222, 1111 }));
}
}
// [Test]
// public void Children_Without_Examine()
// {
@@ -343,7 +343,7 @@
// var subChildren = publishedChild1.Children();
// Assert.IsTrue(subChildren.Select(x => x.Id).ContainsAll(new[] { mSubChild1.Id, mSubChild2.Id, mSubChild3.Id }));
// }
//
// [Test]
// public void Descendants_Without_Examine()
// {
@@ -367,7 +367,7 @@
// var subDescendants = publishedChild1.Descendants();
// Assert.IsTrue(subDescendants.Select(x => x.Id).ContainsAll(new[] { mSubChild1.Id, mSubChild2.Id, mSubChild3.Id }));
// }
//
// [Test]
// public void DescendantsOrSelf_Without_Examine()
// {
@@ -393,116 +393,116 @@
// Assert.IsTrue(subDescendantsOrSelf.Select(x => x.Id).ContainsAll(
// new[] { mChild1.Id, mSubChild1.Id, mSubChild2.Id, mSubChild3.Id }));
// }
//
// [Test]
// public void Parent_Without_Examine()
// {
// var user = ServiceContext.UserService.GetUserById(0);
// var mType = MakeNewMediaType(user, "TestMediaType");
// var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
//
// var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
// var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
// var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
//
// var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
// var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
// var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
//
// var publishedRoot = GetNode(mRoot.Id);
// Assert.AreEqual(null, publishedRoot.Parent);
//
// var publishedChild1 = GetNode(mChild1.Id);
// Assert.AreEqual(mRoot.Id, publishedChild1.Parent.Id);
//
// var publishedSubChild1 = GetNode(mSubChild1.Id);
// Assert.AreEqual(mChild1.Id, publishedSubChild1.Parent.Id);
// }
//
// [Test]
// public void Ancestors_Without_Examine()
// {
// var user = ServiceContext.UserService.GetUserById(0);
// var mType = MakeNewMediaType(user, "TestMediaType");
// var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
//
// var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
// var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
// var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
//
// var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
// var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
// var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
//
// var publishedSubChild1 = GetNode(mSubChild1.Id);
// Assert.IsTrue(publishedSubChild1.Ancestors().Select(x => x.Id).ContainsAll(new[] { mChild1.Id, mRoot.Id }));
// }
//
// [Test]
// public void AncestorsOrSelf_Without_Examine()
// {
// var user = ServiceContext.UserService.GetUserById(0);
// var mType = MakeNewMediaType(user, "TestMediaType");
// var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
//
// var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
// var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
// var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
//
// var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
// var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
// var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
//
// var publishedSubChild1 = GetNode(mSubChild1.Id);
// Assert.IsTrue(publishedSubChild1.AncestorsOrSelf().Select(x => x.Id).ContainsAll(
// new[] { mSubChild1.Id, mChild1.Id, mRoot.Id }));
// }
//
// [Test]
// public void Convert_From_Standard_Xml()
// {
// var nodeId = 2112;
//
// var xml = XElement.Parse(@"<Image id=""2112"" version=""5b3e46ab-3e37-4cfa-ab70-014234b5bd39"" parentID=""2222"" level=""3"" writerID=""0"" nodeType=""1032"" template=""0"" sortOrder=""1"" createDate=""2010-05-19T17:32:46"" updateDate=""2010-05-19T17:32:46"" nodeName=""Sam's Umbraco Image"" urlName=""acnestressscrub"" writerName=""Administrator"" nodeTypeAlias=""Image"" path=""-1,1111,2222,2112"" isDoc="""">
// <umbracoFile><![CDATA[/media/1234/blah.pdf]]></umbracoFile>
// <umbracoWidth>115</umbracoWidth>
// <umbracoHeight>268</umbracoHeight>
// <umbracoBytes>10726</umbracoBytes>
// <umbracoExtension>jpg</umbracoExtension>
// <Image id=""3113"" version=""5b3e46ab-3e37-4cfa-ab70-014234b5bd33"" parentID=""2112"" level=""4"" writerID=""0"" nodeType=""1032"" template=""0"" sortOrder=""2"" createDate=""2010-05-19T17:32:46"" updateDate=""2010-05-19T17:32:46"" nodeName=""Another Umbraco Image"" urlName=""acnestressscrub"" writerName=""Administrator"" nodeTypeAlias=""Image"" path=""-1,1111,2222,2112,3113"" isDoc="""">
// <umbracoFile><![CDATA[/media/1234/blah.pdf]]></umbracoFile>
// <umbracoWidth>115</umbracoWidth>
// <umbracoHeight>268</umbracoHeight>
// <umbracoBytes>10726</umbracoBytes>
// <umbracoExtension>jpg</umbracoExtension>
// </Image>
// </Image>");
// var node = xml.DescendantsAndSelf("Image").Single(x => (int)x.Attribute("id") == nodeId);
//
// var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), ServiceContext.MediaService, ServiceContext.UserService, new StaticCacheProvider(), ContentTypesCache);
//
// var nav = node.CreateNavigator();
//
// var converted = publishedMedia.CreateFromCacheValues(
// publishedMedia.ConvertFromXPathNodeIterator(nav.Select("/Image"), nodeId));
//
// Assert.AreEqual(nodeId, converted.Id);
// Assert.AreEqual(3, converted.Level);
// Assert.AreEqual(1, converted.SortOrder);
// Assert.AreEqual("Sam's Umbraco Image", converted.Name);
// Assert.AreEqual("-1,1111,2222,2112", converted.Path);
// }
//
// [Test]
// public void Detects_Error_In_Xml()
// {
// var errorXml = new XElement("error", string.Format("No media is maching '{0}'", 1234));
// var nav = errorXml.CreateNavigator();
//
// var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), ServiceContext.MediaService, ServiceContext.UserService, new StaticCacheProvider(), ContentTypesCache);
// var converted = publishedMedia.ConvertFromXPathNodeIterator(nav.Select("/"), 1234);
//
// Assert.IsNull(converted);
// }
// }
//}
[Test]
public void Parent_Without_Examine()
{
var user = ServiceContext.UserService.GetUserById(0);
var mType = MakeNewMediaType(user, "TestMediaType");
var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
var publishedRoot = GetNode(mRoot.Id);
Assert.AreEqual(null, publishedRoot.Parent);
var publishedChild1 = GetNode(mChild1.Id);
Assert.AreEqual(mRoot.Id, publishedChild1.Parent.Id);
var publishedSubChild1 = GetNode(mSubChild1.Id);
Assert.AreEqual(mChild1.Id, publishedSubChild1.Parent.Id);
}
[Test]
public void Ancestors_Without_Examine()
{
var user = ServiceContext.UserService.GetUserById(0);
var mType = MakeNewMediaType(user, "TestMediaType");
var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
var publishedSubChild1 = GetNode(mSubChild1.Id);
Assert.IsTrue(publishedSubChild1.Ancestors().Select(x => x.Id).ContainsAll(new[] { mChild1.Id, mRoot.Id }));
}
[Test]
public void AncestorsOrSelf_Without_Examine()
{
var user = ServiceContext.UserService.GetUserById(0);
var mType = MakeNewMediaType(user, "TestMediaType");
var mRoot = MakeNewMedia("MediaRoot", mType, user, -1);
var mChild1 = MakeNewMedia("Child1", mType, user, mRoot.Id);
var mChild2 = MakeNewMedia("Child2", mType, user, mRoot.Id);
var mChild3 = MakeNewMedia("Child3", mType, user, mRoot.Id);
var mSubChild1 = MakeNewMedia("SubChild1", mType, user, mChild1.Id);
var mSubChild2 = MakeNewMedia("SubChild2", mType, user, mChild1.Id);
var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id);
var publishedSubChild1 = GetNode(mSubChild1.Id);
Assert.IsTrue(publishedSubChild1.AncestorsOrSelf().Select(x => x.Id).ContainsAll(
new[] { mSubChild1.Id, mChild1.Id, mRoot.Id }));
}
[Test]
public void Convert_From_Standard_Xml()
{
var nodeId = 2112;
var xml = XElement.Parse(@"<Image id=""2112"" version=""5b3e46ab-3e37-4cfa-ab70-014234b5bd39"" parentID=""2222"" level=""3"" writerID=""0"" nodeType=""1032"" template=""0"" sortOrder=""1"" createDate=""2010-05-19T17:32:46"" updateDate=""2010-05-19T17:32:46"" nodeName=""Sam's Umbraco Image"" urlName=""acnestressscrub"" writerName=""Administrator"" nodeTypeAlias=""Image"" path=""-1,1111,2222,2112"" isDoc="""">
<umbracoFile><![CDATA[/media/1234/blah.pdf]]></umbracoFile>
<umbracoWidth>115</umbracoWidth>
<umbracoHeight>268</umbracoHeight>
<umbracoBytes>10726</umbracoBytes>
<umbracoExtension>jpg</umbracoExtension>
<Image id=""3113"" version=""5b3e46ab-3e37-4cfa-ab70-014234b5bd33"" parentID=""2112"" level=""4"" writerID=""0"" nodeType=""1032"" template=""0"" sortOrder=""2"" createDate=""2010-05-19T17:32:46"" updateDate=""2010-05-19T17:32:46"" nodeName=""Another Umbraco Image"" urlName=""acnestressscrub"" writerName=""Administrator"" nodeTypeAlias=""Image"" path=""-1,1111,2222,2112,3113"" isDoc="""">
<umbracoFile><![CDATA[/media/1234/blah.pdf]]></umbracoFile>
<umbracoWidth>115</umbracoWidth>
<umbracoHeight>268</umbracoHeight>
<umbracoBytes>10726</umbracoBytes>
<umbracoExtension>jpg</umbracoExtension>
</Image>
</Image>");
var node = xml.DescendantsAndSelf("Image").Single(x => (int)x.Attribute("id") == nodeId);
var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), ServiceContext.MediaService, ServiceContext.UserService, new StaticCacheProvider(), ContentTypesCache);
var nav = node.CreateNavigator();
var converted = publishedMedia.CreateFromCacheValues(
publishedMedia.ConvertFromXPathNodeIterator(nav.Select("/Image"), nodeId));
Assert.AreEqual(nodeId, converted.Id);
Assert.AreEqual(3, converted.Level);
Assert.AreEqual(1, converted.SortOrder);
Assert.AreEqual("Sam's Umbraco Image", converted.Name);
Assert.AreEqual("-1,1111,2222,2112", converted.Path);
}
[Test]
public void Detects_Error_In_Xml()
{
var errorXml = new XElement("error", string.Format("No media is maching '{0}'", 1234));
var nav = errorXml.CreateNavigator();
var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null), ServiceContext.MediaService, ServiceContext.UserService, new StaticCacheProvider(), ContentTypesCache);
var converted = publishedMedia.ConvertFromXPathNodeIterator(nav.Select("/"), 1234);
Assert.IsNull(converted);
}
}
}