Updates tests and better type support for importing content

This commit is contained in:
Shannon
2019-01-16 00:13:40 +11:00
parent f6fdc9ae2d
commit 709df804e5
11 changed files with 172 additions and 109 deletions

View File

@@ -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; }
}
}

View 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; }
}
}

View 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; }
}
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -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

View File

@@ -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" />

View File

@@ -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

View File

@@ -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();

Binary file not shown.

View File

@@ -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>