Updates tests and better type support for importing content
This commit is contained in:
@@ -39,16 +39,6 @@ namespace Umbraco.Core.Models.Packaging
|
||||
public IEnumerable<XElement> Languages { get; set; } //fixme: make strongly typed
|
||||
public IEnumerable<XElement> DictionaryItems { get; set; } //fixme: make strongly typed
|
||||
public IEnumerable<XElement> DocumentTypes { get; set; } //fixme: make strongly typed
|
||||
public IEnumerable<XElement> Documents { get; set; } //fixme: make strongly typed
|
||||
public IEnumerable<CompiledPackageDocument> Documents { get; set; }
|
||||
}
|
||||
|
||||
public class CompiledPackageFile
|
||||
{
|
||||
public string OriginalPath { get; set; }
|
||||
public string UniqueFileName { get; set; }
|
||||
public string OriginalName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
26
src/Umbraco.Core/Models/Packaging/CompiledPackageDocument.cs
Normal file
26
src/Umbraco.Core/Models/Packaging/CompiledPackageDocument.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Umbraco.Core.Models.Packaging
|
||||
{
|
||||
public class CompiledPackageDocument
|
||||
{
|
||||
public static CompiledPackageDocument Create(XElement xml)
|
||||
{
|
||||
if (xml.Name.LocalName != "DocumentSet")
|
||||
throw new ArgumentException("The xml isn't formatted correctly, a document element is defined by <DocumentSet>", nameof(xml));
|
||||
return new CompiledPackageDocument
|
||||
{
|
||||
XmlData = xml,
|
||||
ImportMode = xml.AttributeValue<string>("importMode")
|
||||
};
|
||||
}
|
||||
|
||||
public string ImportMode { get; set; } //this is never used
|
||||
|
||||
/// <summary>
|
||||
/// The serialized version of the content
|
||||
/// </summary>
|
||||
public XElement XmlData { get; set; }
|
||||
}
|
||||
}
|
||||
25
src/Umbraco.Core/Models/Packaging/CompiledPackageFile.cs
Normal file
25
src/Umbraco.Core/Models/Packaging/CompiledPackageFile.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Umbraco.Core.Models.Packaging
|
||||
{
|
||||
public class CompiledPackageFile
|
||||
{
|
||||
public static CompiledPackageFile Create(XElement xml)
|
||||
{
|
||||
if (xml.Name.LocalName != "file")
|
||||
throw new ArgumentException("The xml isn't formatted correctly, a file element is defined by <file>", nameof(xml));
|
||||
return new CompiledPackageFile
|
||||
{
|
||||
UniqueFileName = xml.Element("guid")?.Value,
|
||||
OriginalName = xml.Element("orgName")?.Value,
|
||||
OriginalPath = xml.Element("orgPath")?.Value
|
||||
};
|
||||
}
|
||||
|
||||
public string OriginalPath { get; set; }
|
||||
public string UniqueFileName { get; set; }
|
||||
public string OriginalName { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -53,13 +53,7 @@ namespace Umbraco.Core.Packaging
|
||||
UmbracoVersionRequirementsType = requirements.AttributeValue<string>("type").IsNullOrWhiteSpace() ? RequirementsType.Legacy : Enum<RequirementsType>.Parse(requirements.AttributeValue<string>("type")),
|
||||
Control = package.Element("control")?.Value,
|
||||
Actions = xml.Root.Element("Actions")?.ToString(SaveOptions.None) ?? "<Actions></Actions>", //take the entire outer xml value
|
||||
Files = xml.Root.Element("files")?.Elements("file")?.Select(x => new CompiledPackageFile
|
||||
{
|
||||
UniqueFileName = x.Element("guid")?.Value,
|
||||
OriginalName = x.Element("orgName")?.Value,
|
||||
OriginalPath = x.Element("orgPath")?.Value
|
||||
}).ToList() ?? new List<CompiledPackageFile>(),
|
||||
|
||||
Files = xml.Root.Element("files")?.Elements("file")?.Select(CompiledPackageFile.Create).ToList() ?? new List<CompiledPackageFile>(),
|
||||
Macros = xml.Root.Element("Macros")?.Elements("macro") ?? Enumerable.Empty<XElement>(),
|
||||
Templates = xml.Root.Element("Templates")?.Elements("Template") ?? Enumerable.Empty<XElement>(),
|
||||
Stylesheets = xml.Root.Element("Stylesheets")?.Elements("styleSheet") ?? Enumerable.Empty<XElement>(),
|
||||
@@ -67,7 +61,7 @@ namespace Umbraco.Core.Packaging
|
||||
Languages = xml.Root.Element("Languages")?.Elements("Language") ?? Enumerable.Empty<XElement>(),
|
||||
DictionaryItems = xml.Root.Element("DictionaryItems")?.Elements("DictionaryItem") ?? Enumerable.Empty<XElement>(),
|
||||
DocumentTypes = xml.Root.Element("DocumentTypes")?.Elements("DocumentType") ?? Enumerable.Empty<XElement>(),
|
||||
Documents = xml.Root.Element("Documents")?.Elements("DocumentSet") ?? Enumerable.Empty<XElement>(),
|
||||
Documents = xml.Root.Element("Documents")?.Elements("DocumentSet")?.Select(CompiledPackageDocument.Create) ?? Enumerable.Empty<CompiledPackageDocument>(),
|
||||
};
|
||||
|
||||
def.Warnings = GetPreInstallWarnings(def, applicationRootFolder);
|
||||
|
||||
@@ -170,51 +170,48 @@ namespace Umbraco.Core.Packaging
|
||||
#region Content
|
||||
|
||||
|
||||
public IEnumerable<IContent> ImportContent(IEnumerable<XElement> element, IDictionary<string, IContentType> importedDocumentTypes, int userId)
|
||||
public IEnumerable<IContent> ImportContent(IEnumerable<CompiledPackageDocument> docs, IDictionary<string, IContentType> importedDocumentTypes, int userId)
|
||||
{
|
||||
return element.Elements("DocumentSet").SelectMany(x => ImportContent(x, -1, importedDocumentTypes, userId));
|
||||
return docs.SelectMany(x => ImportContent(x, -1, importedDocumentTypes, userId));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Imports and saves package xml as <see cref="IContent"/>
|
||||
/// </summary>
|
||||
/// <param name="element">Xml to import</param>
|
||||
/// <param name="packageDocument">Xml to import</param>
|
||||
/// <param name="parentId">Optional parent Id for the content being imported</param>
|
||||
/// <param name="importedDocumentTypes">A dictionary of already imported document types (basically used as a cache)</param>
|
||||
/// <param name="userId">Optional Id of the user performing the import</param>
|
||||
/// <returns>An enumrable list of generated content</returns>
|
||||
public IEnumerable<IContent> ImportContent(XElement element, int parentId, IDictionary<string, IContentType> importedDocumentTypes, int userId)
|
||||
public IEnumerable<IContent> ImportContent(CompiledPackageDocument packageDocument, int parentId, IDictionary<string, IContentType> importedDocumentTypes, int userId)
|
||||
{
|
||||
var name = element.Name.LocalName;
|
||||
if (name.Equals("DocumentSet"))
|
||||
{
|
||||
//This is a regular deep-structured import
|
||||
var roots = from doc in element.Elements()
|
||||
where (string)doc.Attribute("isDoc") == ""
|
||||
select doc;
|
||||
var element = packageDocument.XmlData;
|
||||
|
||||
var contents = ParseDocumentRootXml(roots, parentId, importedDocumentTypes).ToList();
|
||||
if (contents.Any())
|
||||
_contentService.Save(contents, userId);
|
||||
|
||||
return contents;
|
||||
}
|
||||
var roots = from doc in element.Elements()
|
||||
where (string)doc.Attribute("isDoc") == ""
|
||||
select doc;
|
||||
|
||||
var attribute = element.Attribute("isDoc");
|
||||
if (attribute != null)
|
||||
{
|
||||
//This is a single doc import
|
||||
var elements = new List<XElement> { element };
|
||||
var contents = ParseDocumentRootXml(elements, parentId, importedDocumentTypes).ToList();
|
||||
if (contents.Any())
|
||||
_contentService.Save(contents, userId);
|
||||
|
||||
return contents;
|
||||
}
|
||||
var contents = ParseDocumentRootXml(roots, parentId, importedDocumentTypes).ToList();
|
||||
if (contents.Any())
|
||||
_contentService.Save(contents, userId);
|
||||
|
||||
throw new ArgumentException(
|
||||
"The passed in XElement is not valid! It does not contain a root element called " +
|
||||
"'DocumentSet' (for structured imports) nor is the first element a Document (for single document import).");
|
||||
return contents;
|
||||
|
||||
//var attribute = element.Attribute("isDoc");
|
||||
//if (attribute != null)
|
||||
//{
|
||||
// //This is a single doc import
|
||||
// var elements = new List<XElement> { element };
|
||||
// var contents = ParseDocumentRootXml(elements, parentId, importedDocumentTypes).ToList();
|
||||
// if (contents.Any())
|
||||
// _contentService.Save(contents, userId);
|
||||
|
||||
// return contents;
|
||||
//}
|
||||
|
||||
//throw new ArgumentException(
|
||||
// "The passed in XElement is not valid! It does not contain a root element called " +
|
||||
// "'DocumentSet' (for structured imports) nor is the first element a Document (for single document import).");
|
||||
}
|
||||
|
||||
private IEnumerable<IContent> ParseDocumentRootXml(IEnumerable<XElement> roots, int parentId, IDictionary<string, IContentType> importedContentTypes)
|
||||
|
||||
@@ -111,7 +111,6 @@ namespace Umbraco.Core.Packaging
|
||||
installationSummary.ContentInstalled = _packageDataInstallation.ImportContent(compiledPackage.Documents, importedDocTypes, userId);
|
||||
installationSummary.Actions = _parser.GetPackageActions(XElement.Parse(compiledPackage.Actions), compiledPackage.Name);
|
||||
installationSummary.MetaData = compiledPackage;
|
||||
//fixme: Verify that this will work!
|
||||
installationSummary.FilesInstalled = packageDefinition.Files;
|
||||
|
||||
//make sure the definition is up to date with everything
|
||||
|
||||
@@ -432,6 +432,8 @@
|
||||
<Compile Include="Models\NotificationEmailSubjectParams.cs" />
|
||||
<Compile Include="Models\Packaging\ActionRunAt.cs" />
|
||||
<Compile Include="Models\Packaging\CompiledPackage.cs" />
|
||||
<Compile Include="Models\Packaging\CompiledPackageDocument.cs" />
|
||||
<Compile Include="Models\Packaging\CompiledPackageFile.cs" />
|
||||
<Compile Include="Models\Packaging\IPackageInfo.cs" />
|
||||
<Compile Include="Models\Packaging\PackageDefinition.cs" />
|
||||
<Compile Include="Models\PathValidationExtensions.cs" />
|
||||
|
||||
@@ -3,24 +3,27 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Xml.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.Composing.Composers;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Packaging;
|
||||
using Umbraco.Core.Packaging;
|
||||
using Umbraco.Core.Persistence.Dtos;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.Services;
|
||||
using Umbraco.Tests.Services.Importing;
|
||||
using Umbraco.Tests.Testing;
|
||||
|
||||
namespace Umbraco.Tests.Services.Importing
|
||||
namespace Umbraco.Tests.Packaging
|
||||
{
|
||||
[TestFixture]
|
||||
[Category("Slow")]
|
||||
[Apartment(ApartmentState.STA)]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
|
||||
public class PackageImportTests : TestWithSomeContentBase
|
||||
public class PackageDataInstallationTests : TestWithSomeContentBase
|
||||
{
|
||||
[HideFromTypeFinder]
|
||||
public class Editor1 : DataEditor
|
||||
@@ -66,7 +69,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
Composition.ComposeFileSystems();
|
||||
}
|
||||
|
||||
private PackageDataInstallation PackagingService => Factory.GetInstance<PackageDataInstallation>();
|
||||
private PackageDataInstallation PackageDataInstallation => Factory.GetInstance<PackageDataInstallation>();
|
||||
|
||||
[Test]
|
||||
public void PackagingService_Can_Import_uBlogsy_ContentTypes_And_Verify_Structure()
|
||||
@@ -79,9 +82,9 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = xml.Descendants("DocumentTypes").First();
|
||||
|
||||
// Act
|
||||
var dataTypes = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypes = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
|
||||
var numberOfTemplates = (from doc in templateElement.Elements("Template") select doc).Count();
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
@@ -126,9 +129,9 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = xml.Descendants("DocumentTypes").First();
|
||||
|
||||
// Act
|
||||
var dataTypes = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypes = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
|
||||
// Assert
|
||||
var mRBasePage = contentTypes.First(x => x.Alias == "MRBasePage");
|
||||
@@ -151,9 +154,9 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = xml.Descendants("DocumentTypes").First();
|
||||
|
||||
// Act
|
||||
var dataTypes = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypes = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
@@ -190,7 +193,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var init = ServiceContext.FileService.GetTemplates().Count();
|
||||
|
||||
// Act
|
||||
var templates = PackagingService.ImportTemplates(element.Elements("Template").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(element.Elements("Template").ToList(), 0);
|
||||
var numberOfTemplates = (from doc in element.Elements("Template") select doc).Count();
|
||||
var allTemplates = ServiceContext.FileService.GetTemplates();
|
||||
|
||||
@@ -213,7 +216,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var templates = PackagingService.ImportTemplate(element.Elements("Template").First(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplate(element.Elements("Template").First(), 0);
|
||||
|
||||
// Assert
|
||||
Assert.That(templates, Is.Not.Null);
|
||||
@@ -233,9 +236,9 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var dataTypeDefinitions = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypeDefinitions = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
// Assert
|
||||
@@ -268,13 +271,13 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = xml.Descendants("DocumentTypes").First();
|
||||
|
||||
// Act
|
||||
var dataTypeDefinitions = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypeDefinitions = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
//Assert - Re-Import contenttypes doesn't throw
|
||||
Assert.DoesNotThrow(() => PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0));
|
||||
Assert.DoesNotThrow(() => PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0));
|
||||
Assert.That(contentTypes.Count(), Is.EqualTo(numberOfDocTypes));
|
||||
Assert.That(dataTypeDefinitions, Is.Not.Null);
|
||||
Assert.That(dataTypeDefinitions.Any(), Is.True);
|
||||
@@ -292,13 +295,13 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = xml.Descendants("DocumentTypes").First();
|
||||
|
||||
// Act
|
||||
var dataTypeDefinitions = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var dataTypeDefinitions = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
//Assert - Re-Import contenttypes doesn't throw
|
||||
Assert.DoesNotThrow(() => PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0));
|
||||
Assert.DoesNotThrow(() => PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0));
|
||||
Assert.That(contentTypes.Count(), Is.EqualTo(numberOfDocTypes));
|
||||
Assert.That(dataTypeDefinitions, Is.Not.Null);
|
||||
Assert.That(dataTypeDefinitions.Any(), Is.True);
|
||||
@@ -314,13 +317,13 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var dataTypeElement = xml.Descendants("DataTypes").First();
|
||||
var docTypesElement = xml.Descendants("DocumentTypes").First();
|
||||
var element = xml.Descendants("DocumentSet").First();
|
||||
|
||||
var packageDocument = CompiledPackageDocument.Create(element);
|
||||
|
||||
// Act
|
||||
var dataTypeDefinitions = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypesElement.Elements("DocumentType"), 0);
|
||||
var dataTypeDefinitions = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypesElement.Elements("DocumentType"), 0);
|
||||
var importedContentTypes = contentTypes.ToDictionary(x => x.Alias, x => x);
|
||||
var contents = PackagingService.ImportContent(element, -1, importedContentTypes, 0);
|
||||
var contents = PackageDataInstallation.ImportContent(packageDocument, -1, importedContentTypes, 0);
|
||||
var numberOfDocs = (from doc in element.Descendants()
|
||||
where (string) doc.Attribute("isDoc") == ""
|
||||
select doc).Count();
|
||||
@@ -348,13 +351,13 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var dataTypeElement = xml.Descendants("DataTypes").First();
|
||||
var docTypesElement = xml.Descendants("DocumentTypes").First();
|
||||
var element = xml.Descendants("DocumentSet").First();
|
||||
|
||||
var packageDocument = CompiledPackageDocument.Create(element);
|
||||
|
||||
// Act
|
||||
var dataTypeDefinitions = PackagingService.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypesElement.Elements("DocumentType"), 0);
|
||||
var dataTypeDefinitions = PackageDataInstallation.ImportDataTypes(dataTypeElement.Elements("DataType").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypesElement.Elements("DocumentType"), 0);
|
||||
var importedContentTypes = contentTypes.ToDictionary(x => x.Alias, x => x);
|
||||
var contents = PackagingService.ImportContent(element, -1, importedContentTypes, 0);
|
||||
var contents = PackageDataInstallation.ImportContent(packageDocument, -1, importedContentTypes, 0);
|
||||
var numberOfDocs = (from doc in element.Descendants()
|
||||
where (string)doc.Attribute("isDoc") == ""
|
||||
select doc).Count();
|
||||
@@ -387,7 +390,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var numberOfTemplates = (from doc in templateElement.Elements("Template") select doc).Count();
|
||||
|
||||
// Assert
|
||||
@@ -404,7 +407,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var contentTypes = PackagingService.ImportDocumentType(docTypeElement, 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentType(docTypeElement, 0);
|
||||
|
||||
// Assert
|
||||
Assert.That(contentTypes.Any(), Is.True);
|
||||
@@ -422,7 +425,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var serializer = Factory.GetInstance<IEntityXmlSerializer>();
|
||||
|
||||
// Act
|
||||
var contentTypes = PackagingService.ImportDocumentType(docTypeElement, 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentType(docTypeElement, 0);
|
||||
var contentType = contentTypes.FirstOrDefault();
|
||||
var element = serializer.Serialize(contentType);
|
||||
|
||||
@@ -444,8 +447,8 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var docTypeElement = XElement.Parse(strXml);
|
||||
|
||||
// Act
|
||||
var contentTypes = PackagingService.ImportDocumentType(docTypeElement, 0);
|
||||
var contentTypesUpdated = PackagingService.ImportDocumentType(docTypeElement, 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentType(docTypeElement, 0);
|
||||
var contentTypesUpdated = PackageDataInstallation.ImportDocumentType(docTypeElement, 0);
|
||||
|
||||
// Assert
|
||||
Assert.That(contentTypes.Any(), Is.True);
|
||||
@@ -475,8 +478,8 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
// Act
|
||||
var numberOfTemplates = (from doc in templateElement.Elements("Template") select doc).Count();
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var templatesAfterUpdate = PackagingService.ImportTemplates(templateElementUpdated.Elements("Template").ToList(), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var templatesAfterUpdate = PackageDataInstallation.ImportTemplates(templateElementUpdated.Elements("Template").ToList(), 0);
|
||||
var allTemplates = fileService.GetTemplates();
|
||||
|
||||
// Assert
|
||||
@@ -502,7 +505,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
AddLanguages();
|
||||
|
||||
// Act
|
||||
PackagingService.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
PackageDataInstallation.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
|
||||
// Assert
|
||||
AssertDictionaryItem("Parent", expectedEnglishParentValue, "en-GB");
|
||||
@@ -524,7 +527,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
AddLanguages();
|
||||
|
||||
// Act
|
||||
var dictionaryItems = PackagingService.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
var dictionaryItems = PackageDataInstallation.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
|
||||
// Assert
|
||||
Assert.That(ServiceContext.LocalizationService.DictionaryItemExists(parentKey), "DictionaryItem parentKey does not exist");
|
||||
@@ -553,7 +556,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
AddExistingEnglishAndNorwegianParentDictionaryItem(expectedEnglishParentValue, expectedNorwegianParentValue);
|
||||
|
||||
// Act
|
||||
PackagingService.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
PackageDataInstallation.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
|
||||
// Assert
|
||||
AssertDictionaryItem("Parent", expectedEnglishParentValue, "en-GB");
|
||||
@@ -578,7 +581,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
AddExistingEnglishParentDictionaryItem(expectedEnglishParentValue);
|
||||
|
||||
// Act
|
||||
PackagingService.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
PackageDataInstallation.ImportDictionaryItems(dictionaryItemsElement.Elements("DictionaryItem"), 0);
|
||||
|
||||
// Assert
|
||||
AssertDictionaryItem("Parent", expectedEnglishParentValue, "en-GB");
|
||||
@@ -595,7 +598,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
var LanguageItemsElement = newPackageXml.Elements("Languages").First();
|
||||
|
||||
// Act
|
||||
var languages = PackagingService.ImportLanguages(LanguageItemsElement.Elements("Language"), 0);
|
||||
var languages = PackageDataInstallation.ImportLanguages(LanguageItemsElement.Elements("Language"), 0);
|
||||
var allLanguages = ServiceContext.LocalizationService.GetAllLanguages();
|
||||
|
||||
// Assert
|
||||
@@ -616,7 +619,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var macros = PackagingService.ImportMacros(macrosElement.Elements("macro"), 0).ToList();
|
||||
var macros = PackageDataInstallation.ImportMacros(macrosElement.Elements("macro"), 0).ToList();
|
||||
|
||||
// Assert
|
||||
Assert.That(macros.Any(), Is.True);
|
||||
@@ -638,7 +641,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var macros = PackagingService.ImportMacros(macrosElement.Elements("macro"), 0).ToList();
|
||||
var macros = PackageDataInstallation.ImportMacros(macrosElement.Elements("macro"), 0).ToList();
|
||||
|
||||
// Assert
|
||||
Assert.That(macros.Any(), Is.True);
|
||||
@@ -662,8 +665,8 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var templates = PackagingService.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var templates = PackageDataInstallation.ImportTemplates(templateElement.Elements("Template").ToList(), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
// Assert
|
||||
@@ -690,7 +693,7 @@ namespace Umbraco.Tests.Services.Importing
|
||||
|
||||
|
||||
// Act
|
||||
var contentTypes = PackagingService.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var contentTypes = PackageDataInstallation.ImportDocumentTypes(docTypeElement.Elements("DocumentType"), 0);
|
||||
var numberOfDocTypes = (from doc in docTypeElement.Elements("DocumentType") select doc).Count();
|
||||
|
||||
// Assert
|
||||
@@ -53,14 +53,15 @@ namespace Umbraco.Tests.Packaging
|
||||
applicationRootFolder: new DirectoryInfo(IOHelper.GetRootDirectorySafe()),
|
||||
packageExtractionFolder: new DirectoryInfo(IOHelper.MapPath("~/" + _testBaseFolder))); //we don't want to extract package files to the real root, so extract to a test folder
|
||||
|
||||
private const string DocumentTypePickerUmb = "Document_Type_Picker_1.1.umb";
|
||||
private const string DocumentTypePickerPackage = "Document_Type_Picker_1.1.umb";
|
||||
private const string HelloPackage = "Hello_1.0.0.zip";
|
||||
|
||||
[Test]
|
||||
public void Can_Read_Compiled_Package()
|
||||
public void Can_Read_Compiled_Package_1()
|
||||
{
|
||||
var package = PackageInstallation.ReadPackage(
|
||||
//this is where our test zip file is
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerUmb)));
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
|
||||
Assert.IsNotNull(package);
|
||||
Assert.AreEqual(1, package.Files.Count);
|
||||
Assert.AreEqual("095e064b-ba4d-442d-9006-3050983c13d8.dll", package.Files[0].UniqueFileName);
|
||||
@@ -78,6 +79,32 @@ namespace Umbraco.Tests.Packaging
|
||||
Assert.AreEqual(1, package.DataTypes.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Read_Compiled_Package_2()
|
||||
{
|
||||
var package = PackageInstallation.ReadPackage(
|
||||
//this is where our test zip file is
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), HelloPackage)));
|
||||
Assert.IsNotNull(package);
|
||||
Assert.AreEqual(0, package.Files.Count);
|
||||
Assert.AreEqual("Hello", package.Name);
|
||||
Assert.AreEqual("1.0.0", package.Version);
|
||||
Assert.AreEqual("http://opensource.org/licenses/MIT", package.LicenseUrl);
|
||||
Assert.AreEqual("MIT License", package.License);
|
||||
Assert.AreEqual(8, package.UmbracoVersion.Major);
|
||||
Assert.AreEqual(0, package.UmbracoVersion.Minor);
|
||||
Assert.AreEqual(0, package.UmbracoVersion.Build);
|
||||
Assert.AreEqual(RequirementsType.Strict, package.UmbracoVersionRequirementsType);
|
||||
Assert.AreEqual("asdf", package.Author);
|
||||
Assert.AreEqual("http://hello.com", package.AuthorUrl);
|
||||
Assert.AreEqual("asdf", package.Readme);
|
||||
Assert.AreEqual(1, package.Documents.Count());
|
||||
Assert.AreEqual("root", package.Documents.First().ImportMode);
|
||||
Assert.AreEqual(1, package.DocumentTypes.Count());
|
||||
Assert.AreEqual(1, package.Templates.Count());
|
||||
Assert.AreEqual(1, package.DataTypes.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Read_Compiled_Package_Warnings()
|
||||
{
|
||||
@@ -89,7 +116,7 @@ namespace Umbraco.Tests.Packaging
|
||||
|
||||
var preInstallWarnings = PackageInstallation.ReadPackage(
|
||||
//this is where our test zip file is
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerUmb)))
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)))
|
||||
.Warnings;
|
||||
Assert.IsNotNull(preInstallWarnings);
|
||||
|
||||
@@ -104,7 +131,7 @@ namespace Umbraco.Tests.Packaging
|
||||
{
|
||||
var package = PackageInstallation.ReadPackage(
|
||||
//this is where our test zip file is
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerUmb)));
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
|
||||
|
||||
var def = PackageDefinition.FromCompiledPackage(package);
|
||||
def.Id = 1;
|
||||
@@ -126,7 +153,7 @@ namespace Umbraco.Tests.Packaging
|
||||
{
|
||||
var package = PackageInstallation.ReadPackage(
|
||||
//this is where our test zip file is
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerUmb)));
|
||||
new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
|
||||
var def = PackageDefinition.FromCompiledPackage(package);
|
||||
def.Id = 1;
|
||||
def.PackageId = Guid.NewGuid();
|
||||
|
||||
BIN
src/Umbraco.Tests/Packaging/Packages/Hello_1.0.0.zip
Normal file
BIN
src/Umbraco.Tests/Packaging/Packages/Hello_1.0.0.zip
Normal file
Binary file not shown.
@@ -444,7 +444,7 @@
|
||||
<Compile Include="Services\ContentTypeServiceTests.cs" />
|
||||
<Compile Include="Services\DataTypeServiceTests.cs" />
|
||||
<Compile Include="Services\EntityServiceTests.cs" />
|
||||
<Compile Include="Services\Importing\PackageImportTests.cs" />
|
||||
<Compile Include="Packaging\PackageDataInstallationTests.cs" />
|
||||
<Compile Include="Services\Importing\ImportResources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
|
||||
Reference in New Issue
Block a user