Merge remote-tracking branch 'origin/netcore/netcore' into netcore/feature/migrate-persistance-tests

This commit is contained in:
Mole
2020-10-20 15:08:32 +02:00
34 changed files with 441 additions and 406 deletions

View File

@@ -21,7 +21,6 @@ namespace Umbraco.Core.Services
_textService = textService;
}
public IEnumerable<ValidationResult> ValidatePropertyValue(
IPropertyType propertyType,
object postedValue)

View File

@@ -30,6 +30,7 @@ namespace Umbraco.Tests.Common.Builders
private GenericDictionaryBuilder<ContentBuilder, string, object> _propertyDataBuilder;
private int? _id;
private int? _versionId;
private Guid? _key;
private DateTime? _createDate;
private DateTime? _updateDate;
@@ -48,12 +49,10 @@ namespace Umbraco.Tests.Common.Builders
private string _propertyValuesCulture;
private string _propertyValuesSegment;
public ContentTypeBuilder AddContentType()
public ContentBuilder WithVersionId(int versionId)
{
_contentType = null;
var builder = new ContentTypeBuilder(this);
_contentTypeBuilder = builder;
return builder;
_versionId = versionId;
return this;
}
public ContentBuilder WithParent(IContent parent)
@@ -87,6 +86,14 @@ namespace Umbraco.Tests.Common.Builders
return this;
}
public ContentTypeBuilder AddContentType()
{
_contentType = null;
var builder = new ContentTypeBuilder(this);
_contentTypeBuilder = builder;
return builder;
}
public GenericDictionaryBuilder<ContentBuilder, string, object> AddPropertyData()
{
var builder = new GenericDictionaryBuilder<ContentBuilder, string, object>(this);
@@ -97,6 +104,7 @@ namespace Umbraco.Tests.Common.Builders
public override Content Build()
{
var id = _id ?? 0;
var versionId = _versionId ?? 0;
var key = _key ?? Guid.NewGuid();
var parentId = _parentId ?? -1;
var parent = _parent ?? null;
@@ -131,6 +139,7 @@ namespace Umbraco.Tests.Common.Builders
}
content.Id = id;
content.VersionId = versionId;
content.Key = key;
content.CreateDate = createDate;
content.UpdateDate = updateDate;

View File

@@ -20,6 +20,7 @@ namespace Umbraco.Tests.Common.Builders
private int? _propertyTypeIdsIncrementingFrom;
private int? _defaultTemplateId;
private ContentVariation? _contentVariation;
private PropertyTypeCollection _propertyTypeCollection;
public ContentTypeBuilder() : base(null)
{
@@ -41,6 +42,12 @@ namespace Umbraco.Tests.Common.Builders
return this;
}
public ContentTypeBuilder WithPropertyTypeCollection(PropertyTypeCollection propertyTypeCollection)
{
_propertyTypeCollection = propertyTypeCollection;
return this;
}
public PropertyGroupBuilder<ContentTypeBuilder> AddPropertyGroup()
{
var builder = new PropertyGroupBuilder<ContentTypeBuilder>(this);
@@ -104,9 +111,21 @@ namespace Umbraco.Tests.Common.Builders
contentType.Variations = contentVariation;
contentType.NoGroupPropertyTypes = _noGroupPropertyTypeBuilders.Select(x => x.Build());
BuildPropertyGroups(contentType, _propertyGroupBuilders.Select(x => x.Build()));
BuildPropertyTypeIds(contentType, _propertyTypeIdsIncrementingFrom);
if (_propertyTypeCollection != null)
{
var propertyGroup = new PropertyGroupBuilder()
.WithName("Content")
.WithSortOrder(1)
.WithPropertyTypeCollection(_propertyTypeCollection)
.Build();
contentType.PropertyGroups.Add(propertyGroup);
}
else
{
contentType.NoGroupPropertyTypes = _noGroupPropertyTypeBuilders.Select(x => x.Build());
BuildPropertyGroups(contentType, _propertyGroupBuilders.Select(x => x.Build()));
BuildPropertyTypeIds(contentType, _propertyTypeIdsIncrementingFrom);
}
contentType.AllowedContentTypes = _allowedContentTypeBuilders.Select(x => x.Build());
@@ -134,7 +153,7 @@ namespace Umbraco.Tests.Common.Builders
public static ContentType CreateSimpleContentType2(string alias, string name, IContentType parent = null, bool randomizeAliases = false, string propertyGroupName = "Content")
{
var builder = CreateSimpleContentTypeHelper(alias, name, parent, randomizeAliases, propertyGroupName);
var builder = CreateSimpleContentTypeHelper(alias, name, parent, randomizeAliases: randomizeAliases, propertyGroupName: propertyGroupName);
builder.AddPropertyType()
.WithAlias(RandomAlias("gen", randomizeAliases))
@@ -146,54 +165,70 @@ namespace Umbraco.Tests.Common.Builders
.Done();
return (ContentType)builder.Build();
}public static ContentType CreateSimpleContentType(string alias = null, string name = null, IContentType parent = null, bool randomizeAliases = false, string propertyGroupName = "Content", bool mandatoryProperties = false, int defaultTemplateId = 0)
{
return (ContentType)CreateSimpleContentTypeHelper(alias, name, parent, randomizeAliases, propertyGroupName, mandatoryProperties, defaultTemplateId).Build();
}
public static ContentTypeBuilder CreateSimpleContentTypeHelper(string alias = null, string name = null, IContentType parent = null, bool randomizeAliases = false, string propertyGroupName = "Content", bool mandatoryProperties = false, int defaultTemplateId = 0)
public static ContentType CreateSimpleContentType(string alias = null, string name = null, IContentType parent = null, PropertyTypeCollection propertyTypeCollection = null, bool randomizeAliases = false, string propertyGroupName = "Content", bool mandatoryProperties = false, int defaultTemplateId = 0)
{
return new ContentTypeBuilder()
return (ContentType)CreateSimpleContentTypeHelper(alias, name, parent, propertyTypeCollection, randomizeAliases, propertyGroupName, mandatoryProperties, defaultTemplateId).Build();
}
public static ContentTypeBuilder CreateSimpleContentTypeHelper(string alias = null, string name = null, IContentType parent = null, PropertyTypeCollection propertyTypeCollection = null, bool randomizeAliases = false, string propertyGroupName = "Content", bool mandatoryProperties = false, int defaultTemplateId = 0)
{
var builder = new ContentTypeBuilder()
.WithAlias(alias ?? "simple")
.WithName(name ?? "Simple Page")
.WithParentContentType(parent)
.AddPropertyGroup()
.WithName(propertyGroupName)
.WithSortOrder(1)
.WithSupportsPublishing(true)
.AddPropertyType()
.WithAlias(RandomAlias("title", randomizeAliases))
.WithName("Title")
.WithParentContentType(parent);
if (propertyTypeCollection != null)
{
builder = builder
.WithPropertyTypeCollection(propertyTypeCollection);
}
else
{
builder = builder
.AddPropertyGroup()
.WithName(propertyGroupName)
.WithSortOrder(1)
.WithMandatory(mandatoryProperties)
.Done()
.AddPropertyType()
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.TinyMce)
.WithValueStorageType(ValueStorageType.Ntext)
.WithAlias(RandomAlias("bodyText", randomizeAliases))
.WithName("Body text")
.WithSortOrder(2)
.WithDataTypeId(Constants.DataTypes.RichtextEditor)
.WithMandatory(mandatoryProperties)
.Done()
.AddPropertyType()
.WithAlias(RandomAlias("author", randomizeAliases))
.WithName("Author")
.WithSortOrder(3)
.WithMandatory(mandatoryProperties)
.Done()
.WithSupportsPublishing(true)
.AddPropertyType()
.WithAlias(RandomAlias("title", randomizeAliases))
.WithName("Title")
.WithSortOrder(1)
.WithMandatory(mandatoryProperties)
.Done()
.AddPropertyType()
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.TinyMce)
.WithValueStorageType(ValueStorageType.Ntext)
.WithAlias(RandomAlias("bodyText", randomizeAliases))
.WithName("Body text")
.WithSortOrder(2)
.WithDataTypeId(Constants.DataTypes.RichtextEditor)
.WithMandatory(mandatoryProperties)
.Done()
.AddPropertyType()
.WithAlias(RandomAlias("author", randomizeAliases))
.WithName("Author")
.WithSortOrder(3)
.WithMandatory(mandatoryProperties)
.Done()
.Done();
}
builder = builder
.AddAllowedTemplate()
.WithId(defaultTemplateId)
.WithAlias("textPage")
.WithName("Textpage")
.Done()
.AddAllowedTemplate()
.WithId(defaultTemplateId)
.WithAlias("textPage")
.WithName("Textpage")
.Done()
.WithDefaultTemplateId(defaultTemplateId);
.WithDefaultTemplateId(defaultTemplateId);
return builder;
}
public static ContentType CreateSimpleTagsContentType(string alias, string name, IContentType parent = null, bool randomizeAliases = false, string propertyGroupName = "Content", int defaultTemplateId = 1)
{
var contentType = CreateSimpleContentType(alias, name, parent, randomizeAliases, propertyGroupName, defaultTemplateId: defaultTemplateId);
var contentType = CreateSimpleContentType(alias, name, parent, randomizeAliases: randomizeAliases, propertyGroupName: propertyGroupName, defaultTemplateId: defaultTemplateId);
var propertyType = new PropertyTypeBuilder()
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Tags)
@@ -215,7 +250,6 @@ namespace Umbraco.Tests.Common.Builders
.WithAlias(alias)
.WithName(name)
.AddPropertyGroup()
.WithId(1)
.WithName("Content")
.WithSortOrder(1)
.WithSupportsPublishing(true)
@@ -234,7 +268,6 @@ namespace Umbraco.Tests.Common.Builders
.Done()
.Done()
.AddPropertyGroup()
.WithId(2)
.WithName("Meta")
.WithSortOrder(2)
.WithSupportsPublishing(true)

View File

@@ -18,9 +18,18 @@ namespace Umbraco.Tests.Common.Builders
private Guid? _key;
private DateTime? _createDate;
private DateTime? _updateDate;
private IPropertyType _propertyType;
public PropertyBuilder WithPropertyType(IPropertyType propertyType)
{
_propertyTypeBuilder = null;
_propertyType = propertyType;
return this;
}
public PropertyTypeBuilder<PropertyBuilder> AddPropertyType()
{
_propertyType = null;
var builder = new PropertyTypeBuilder<PropertyBuilder>(this);
_propertyTypeBuilder = builder;
return builder;
@@ -33,8 +42,15 @@ namespace Umbraco.Tests.Common.Builders
var createDate = _createDate ?? DateTime.Now;
var updateDate = _updateDate ?? DateTime.Now;
if (_propertyTypeBuilder is null && _propertyType is null)
{
throw new InvalidOperationException("A property cannot be constructed without providing a property type. Use AddPropertyType() or WithPropertyType().");
}
var propertyType = _propertyType ?? _propertyTypeBuilder.Build();
// Needs to be within collection to support publishing.
var propertyTypeCollection = new PropertyTypeCollection(true, new[] { _propertyTypeBuilder.Build() });
var propertyTypeCollection = new PropertyTypeCollection(true, new[] { propertyType });
return new Property(id, propertyTypeCollection[0])
{

View File

@@ -37,11 +37,18 @@ namespace Umbraco.Tests.Common.Builders
private string _name;
private int? _sortOrder;
private bool? _supportsPublishing;
private PropertyTypeCollection _propertyTypeCollection;
public PropertyGroupBuilder(TParent parentBuilder) : base(parentBuilder)
{
}
public PropertyGroupBuilder<TParent> WithPropertyTypeCollection(PropertyTypeCollection propertyTypeCollection)
{
_propertyTypeCollection = propertyTypeCollection;
return this;
}
public PropertyTypeBuilder<PropertyGroupBuilder<TParent>> AddPropertyType()
{
var builder = new PropertyTypeBuilder<PropertyGroupBuilder<TParent>>(this);
@@ -51,7 +58,7 @@ namespace Umbraco.Tests.Common.Builders
public override PropertyGroup Build()
{
var id = _id ?? 1;
var id = _id ?? 0;
var key = _key ?? Guid.NewGuid();
var createDate = _createDate ?? DateTime.Now;
var updateDate = _updateDate ?? DateTime.Now;
@@ -59,13 +66,21 @@ namespace Umbraco.Tests.Common.Builders
var sortOrder = _sortOrder ?? 0;
var supportsPublishing = _supportsPublishing ?? false;
var properties = new PropertyTypeCollection(supportsPublishing);
foreach (var propertyType in _propertyTypeBuilders.Select(x => x.Build()))
PropertyTypeCollection propertyTypeCollection;
if (_propertyTypeCollection != null)
{
properties.Add(propertyType);
propertyTypeCollection = _propertyTypeCollection;
}
else
{
propertyTypeCollection = new PropertyTypeCollection(supportsPublishing);
foreach (var propertyType in _propertyTypeBuilders.Select(x => x.Build()))
{
propertyTypeCollection.Add(propertyType);
}
}
return new PropertyGroup(properties)
return new PropertyGroup(propertyTypeCollection)
{
Id = id,
Key = key,

View File

@@ -756,7 +756,7 @@ namespace Umbraco.Tests.Models.Mapping
Alias = "umbracoUrlName", Name = "Slug", Description = "", Mandatory = false, SortOrder = 1, DataTypeId = -88
});
ContentTypeBuilder.EnsureAllIds(ctMain, 8888);
var ctChild1 = ContentTypeBuilder.CreateSimpleContentType("child1", "Child 1", ctMain, true);
var ctChild1 = ContentTypeBuilder.CreateSimpleContentType("child1", "Child 1", ctMain, randomizeAliases: true);
ctChild1.AddPropertyType(new PropertyType(ShortStringHelper, Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Ntext)
{
Alias = "someProperty",
@@ -767,7 +767,7 @@ namespace Umbraco.Tests.Models.Mapping
DataTypeId = -88
}, "Another tab");
ContentTypeBuilder.EnsureAllIds(ctChild1, 7777);
var contentType = ContentTypeBuilder.CreateSimpleContentType("child2", "Child 2", ctChild1, true, "CustomGroup");
var contentType = ContentTypeBuilder.CreateSimpleContentType("child2", "Child 2", ctChild1, randomizeAliases: true, propertyGroupName: "CustomGroup");
//not assigned to tab
contentType.AddPropertyType(new PropertyType(ShortStringHelper, Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Ntext)
{

View File

@@ -519,8 +519,8 @@ namespace Umbraco.Tests.Persistence.Repositories
{
var repository = ContentTypeRepository;
var ctMain = ContentTypeBuilder.CreateSimpleContentType(defaultTemplateId:0);
var ctChild1 = ContentTypeBuilder.CreateSimpleContentType("child1", "Child 1", ctMain, true, defaultTemplateId:0);
var ctChild2 = ContentTypeBuilder.CreateSimpleContentType("child2", "Child 2", ctChild1, true, defaultTemplateId:0);
var ctChild1 = ContentTypeBuilder.CreateSimpleContentType("child1", "Child 1", ctMain, randomizeAliases: true, defaultTemplateId: 0);
var ctChild2 = ContentTypeBuilder.CreateSimpleContentType("child2", "Child 2", ctChild1, randomizeAliases: true, defaultTemplateId: 0);
repository.Save(ctMain);
repository.Save(ctChild1);

View File

@@ -358,13 +358,13 @@ namespace Umbraco.Tests.Integration.Services
var global = ContentTypeBuilder.CreateSimpleContentType("global", "Global", defaultTemplateId: template.Id);
ContentTypeService.Save(global);
var components = ContentTypeBuilder.CreateSimpleContentType("components", "Components", global, true, defaultTemplateId: template.Id);
var components = ContentTypeBuilder.CreateSimpleContentType("components", "Components", global, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(components);
var component = ContentTypeBuilder.CreateSimpleContentType("component", "Component", components, true, defaultTemplateId: template.Id);
var component = ContentTypeBuilder.CreateSimpleContentType("component", "Component", components, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(component);
var category = ContentTypeBuilder.CreateSimpleContentType("category", "Category", global, true, defaultTemplateId: template.Id);
var category = ContentTypeBuilder.CreateSimpleContentType("category", "Category", global, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(category);
var success = category.AddContentType(component);
@@ -378,10 +378,10 @@ namespace Umbraco.Tests.Integration.Services
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("page", "Page", null, true, defaultTemplateId: template.Id);
var contentType = ContentTypeBuilder.CreateSimpleContentType("page", "Page", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(contentType);
var childContentType = ContentTypeBuilder.CreateSimpleContentType("childPage", "Child Page", contentType, true, "Child Content", defaultTemplateId: template.Id);
var childContentType = ContentTypeBuilder.CreateSimpleContentType("childPage", "Child Page", contentType, randomizeAliases: true, propertyGroupName: "Child Content", defaultTemplateId: template.Id);
ContentTypeService.Save(childContentType);
var content = ContentService.Create("Page 1", -1, childContentType.Alias);
ContentService.Save(content);
@@ -593,10 +593,10 @@ namespace Umbraco.Tests.Integration.Services
var parentContentType1 = ContentTypeBuilder.CreateSimpleContentType("parent1", "Parent1", defaultTemplateId: template.Id);
ContentTypeService.Save(parentContentType1);
var parentContentType2 = ContentTypeBuilder.CreateSimpleContentType("parent2", "Parent2", null, true, defaultTemplateId: template.Id);
var parentContentType2 = ContentTypeBuilder.CreateSimpleContentType("parent2", "Parent2", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(parentContentType2);
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType("category", "Category", parentContentType1, true, defaultTemplateId: template.Id) as IContentType;
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType("category", "Category", parentContentType1, randomizeAliases: true, defaultTemplateId: template.Id) as IContentType;
ContentTypeService.Save(simpleContentType);
// Act
@@ -690,10 +690,10 @@ namespace Umbraco.Tests.Integration.Services
var parentContentType1 = ContentTypeBuilder.CreateSimpleContentType("parent1", "Parent1", defaultTemplateId: template.Id);
ContentTypeService.Save(parentContentType1);
var parentContentType2 = ContentTypeBuilder.CreateSimpleContentType("parent2", "Parent2", null, true, defaultTemplateId: template.Id);
var parentContentType2 = ContentTypeBuilder.CreateSimpleContentType("parent2", "Parent2", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(parentContentType2);
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType("category", "Category", parentContentType1, true, defaultTemplateId: template.Id);
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType("category", "Category", parentContentType1, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(simpleContentType);
// Act
@@ -733,7 +733,7 @@ namespace Umbraco.Tests.Integration.Services
var parent = ContentTypeBuilder.CreateSimpleContentType(defaultTemplateId: template.Id);
ContentTypeService.Save(parent);
var child = ContentTypeBuilder.CreateSimpleContentType("simpleChildPage", "Simple Child Page", parent, true, defaultTemplateId: template.Id);
var child = ContentTypeBuilder.CreateSimpleContentType("simpleChildPage", "Simple Child Page", parent, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(child);
var composition = ContentTypeBuilder.CreateMetaContentType();
ContentTypeService.Save(composition);
@@ -762,11 +762,11 @@ namespace Umbraco.Tests.Integration.Services
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var basePage = ContentTypeBuilder.CreateSimpleContentType("basePage", "Base Page", null, true, defaultTemplateId: template.Id);
var basePage = ContentTypeBuilder.CreateSimpleContentType("basePage", "Base Page", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(basePage);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", basePage, defaultTemplateId: template.Id);
ContentTypeService.Save(contentPage);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, true, defaultTemplateId: template.Id);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(advancedPage);
var metaComposition = ContentTypeBuilder.CreateMetaContentType();
@@ -1048,11 +1048,11 @@ namespace Umbraco.Tests.Integration.Services
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", null, true, "Content", defaultTemplateId: template.Id);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(page);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, true, "Content_", defaultTemplateId: template.Id);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, randomizeAliases: true, propertyGroupName: "Content_", defaultTemplateId: template.Id);
ContentTypeService.Save(contentPage);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, true, "Details", defaultTemplateId: template.Id);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, randomizeAliases: true, propertyGroupName: "Details", defaultTemplateId: template.Id);
ContentTypeService.Save(advancedPage);
var contentMetaComposition = ContentTypeBuilder.CreateContentMetaContentType();
@@ -1157,11 +1157,11 @@ namespace Umbraco.Tests.Integration.Services
// Arrange
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var basePage = ContentTypeBuilder.CreateSimpleContentType("basePage", "Base Page", null, true, defaultTemplateId: template.Id);
var basePage = ContentTypeBuilder.CreateSimpleContentType("basePage", "Base Page", randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(basePage);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", basePage, true, defaultTemplateId: template.Id);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", basePage, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(contentPage);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, true, defaultTemplateId: template.Id);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, randomizeAliases: true, defaultTemplateId: template.Id);
ContentTypeService.Save(advancedPage);
var metaComposition = ContentTypeBuilder.CreateMetaContentType();
@@ -1200,7 +1200,7 @@ namespace Umbraco.Tests.Integration.Services
// create 'page' content type with a 'Content_' group
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", null, false, "Content_", defaultTemplateId: template.Id);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", propertyGroupName: "Content_", defaultTemplateId: template.Id);
Assert.AreEqual(1, page.PropertyGroups.Count);
Assert.AreEqual("Content_", page.PropertyGroups.First().Name);
Assert.AreEqual(3, page.PropertyTypes.Count());
@@ -1210,7 +1210,7 @@ namespace Umbraco.Tests.Integration.Services
ContentTypeService.Save(page);
// create 'contentPage' content type as a child of 'page'
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, true, defaultTemplateId: template.Id);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, randomizeAliases: true, defaultTemplateId: template.Id);
Assert.AreEqual(1, page.PropertyGroups.Count);
Assert.AreEqual("Content_", page.PropertyGroups.First().Name);
Assert.AreEqual(3, contentPage.PropertyTypes.Count());
@@ -1281,11 +1281,11 @@ namespace Umbraco.Tests.Integration.Services
// Arrange
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", null, true, "Content_", defaultTemplateId: template.Id);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", randomizeAliases: true, propertyGroupName: "Content_", defaultTemplateId: template.Id);
ContentTypeService.Save(page);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, true, "Contentx", defaultTemplateId: template.Id);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, randomizeAliases: true, propertyGroupName: "Contentx", defaultTemplateId: template.Id);
ContentTypeService.Save(contentPage);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, true, "Contenty", defaultTemplateId: template.Id);
var advancedPage = ContentTypeBuilder.CreateSimpleContentType("advancedPage", "Advanced Page", contentPage, randomizeAliases: true, propertyGroupName: "Contenty", defaultTemplateId: template.Id);
ContentTypeService.Save(advancedPage);
var contentMetaComposition = ContentTypeBuilder.CreateContentMetaContentType();
@@ -1355,9 +1355,9 @@ namespace Umbraco.Tests.Integration.Services
// Arrange
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", null, true, "Content_", defaultTemplateId: template.Id);
var page = ContentTypeBuilder.CreateSimpleContentType("page", "Page", randomizeAliases: true, propertyGroupName: "Content_", defaultTemplateId: template.Id);
ContentTypeService.Save(page);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, true, "Content", defaultTemplateId: template.Id);
var contentPage = ContentTypeBuilder.CreateSimpleContentType("contentPage", "Content Page", page, randomizeAliases: true, propertyGroupName: "Content", defaultTemplateId: template.Id);
ContentTypeService.Save(contentPage);
var contentMetaComposition = ContentTypeBuilder.CreateContentMetaContentType();
@@ -1589,11 +1589,11 @@ namespace Umbraco.Tests.Integration.Services
typeA.PropertyTypes.First(x => x.Alias.InvariantEquals("title")).Variations = ContentVariation.Culture; // with a variant property
ContentTypeService.Save(typeA);
var typeB = ContentTypeBuilder.CreateSimpleContentType("b", "B", typeA, true, defaultTemplateId: template.Id);
var typeB = ContentTypeBuilder.CreateSimpleContentType("b", "B", typeA, randomizeAliases: true, defaultTemplateId: template.Id);
typeB.Variations = ContentVariation.Nothing; // make it invariant
ContentTypeService.Save(typeB);
var typeC = ContentTypeBuilder.CreateSimpleContentType("c", "C", typeA, true, defaultTemplateId: template.Id);
var typeC = ContentTypeBuilder.CreateSimpleContentType("c", "C", typeA, randomizeAliases: true, defaultTemplateId: template.Id);
typeC.Variations = ContentVariation.Culture; // make it variant
ContentTypeService.Save(typeC);
@@ -1705,7 +1705,7 @@ namespace Umbraco.Tests.Integration.Services
{
var contentType = ContentTypeBuilder.CreateSimpleContentType("childType" + i, "ChildType" + i,
//make the last entry in the list, this one's parent
list.Last(), true, defaultTemplateId: template.Id);
list.Last(), randomizeAliases: true, defaultTemplateId: template.Id);
list.Add(contentType);
}

View File

@@ -3,7 +3,7 @@ using System.Linq;
using NUnit.Framework;
using Umbraco.Core.Models;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class ContentScheduleTests

View File

@@ -7,62 +7,40 @@ using System.Threading;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using Newtonsoft.Json;
using Umbraco.Core;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing.CompositionExtensions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Services;
using Umbraco.Core.Services.Implement;
using Umbraco.Tests.TestHelpers.Entities;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
using Umbraco.Tests.TestHelpers.Stubs;
using Umbraco.Tests.Testing;
using Umbraco.Web.PropertyEditors;
namespace Umbraco.Tests.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class ContentTests : UmbracoTestBase
public class ContentTests
{
private IContentTypeService _contentTypeService;
protected override void Compose()
{
base.Compose();
Composition.ComposeFileSystems();
Composition.Register(_ => Mock.Of<IDataTypeService>());
// all this is required so we can validate properties...
var editor = new TextboxPropertyEditor(NullLoggerFactory.Instance, Mock.Of<IDataTypeService>(), Mock.Of<ILocalizationService>(), IOHelper, ShortStringHelper, LocalizedTextService) { Alias = "test" };
Composition.Register(_ => new DataEditorCollection(new [] { editor }));
Composition.Register<PropertyEditorCollection>();
var dataType = Mock.Of<IDataType>();
Mock.Get(dataType).Setup(x => x.Configuration).Returns(() => new object());
var dataTypeService = Mock.Of<IDataTypeService>();
Mock.Get(dataTypeService)
.Setup(x => x.GetDataType(It.IsAny<int>()))
.Returns(() => dataType);
_contentTypeService = Mock.Of<IContentTypeService>();
var mediaTypeService = Mock.Of<IMediaTypeService>();
var memberTypeService = Mock.Of<IMemberTypeService>();
Composition.Register(_ => ServiceContext.CreatePartial(dataTypeService: dataTypeService, contentTypeBaseServiceProvider: new ContentTypeBaseServiceProvider(_contentTypeService, mediaTypeService, memberTypeService)));
}
private IContentTypeService _contentTypeService = Mock.Of<IContentTypeService>();
[Test]
public void Variant_Culture_Names_Track_Dirty_Changes()
{
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
contentType.Variations = ContentVariation.Culture;
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.WithContentVariation(ContentVariation.Culture)
.Build();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var content = new ContentBuilder()
.WithId(1)
.WithVersionId(1)
.WithName("content")
.WithContentType(contentType)
.Build();
const string langFr = "fr-FR";
@@ -88,13 +66,19 @@ namespace Umbraco.Tests.Models
[Test]
public void Variant_Published_Culture_Names_Track_Dirty_Changes()
{
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.WithContentVariation(ContentVariation.Culture)
.Build();
var content = new ContentBuilder()
.WithId(1)
.WithVersionId(1)
.WithName("content")
.WithContentType(contentType)
.Build();
const string langFr = "fr-FR";
contentType.Variations = ContentVariation.Culture;
content.ChangeContentType(contentType);
Assert.IsFalse(content.IsPropertyDirty("PublishCultureInfos")); //hasn't been changed
@@ -121,18 +105,25 @@ namespace Umbraco.Tests.Models
[Test]
public void Get_Non_Grouped_Properties()
{
var contentType = MockedContentTypes.CreateSimpleContentType();
//add non-grouped properties
contentType.AddPropertyType(new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "nonGrouped1") { Name = "Non Grouped 1", Description = "", Mandatory = false, SortOrder = 1, DataTypeId = -88 });
contentType.AddPropertyType(new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "nonGrouped2") { Name = "Non Grouped 2", Description = "", Mandatory = false, SortOrder = 1, DataTypeId = -88 });
var contentType = ContentTypeBuilder.CreateSimpleContentType();
//ensure that nothing is marked as dirty
// Add non-grouped properties
var pt1 = new PropertyTypeBuilder()
.WithAlias("nonGrouped1")
.WithName("Non Grouped 1")
.Build();
var pt2 = new PropertyTypeBuilder()
.WithAlias("nonGrouped2")
.WithName("Non Grouped 2")
.Build();
contentType.AddPropertyType(pt1);
contentType.AddPropertyType(pt2);
// Ensure that nothing is marked as dirty
contentType.ResetDirtyProperties(false);
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateSimpleContent(contentType);
//need to id the p
var content = ContentBuilder.CreateSimpleContent(contentType);
var nonGrouped = content.GetNonGroupedProperties();
@@ -143,10 +134,10 @@ namespace Umbraco.Tests.Models
[Test]
public void All_Dirty_Properties_Get_Reset()
{
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
content.ResetDirtyProperties(false);
@@ -161,10 +152,10 @@ namespace Umbraco.Tests.Models
public void Can_Verify_Mocked_Content()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
@@ -176,10 +167,10 @@ namespace Umbraco.Tests.Models
public void Can_Change_Property_Value()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.Properties["title"].SetValue("This is the new title");
@@ -194,10 +185,10 @@ namespace Umbraco.Tests.Models
public void Can_Set_Property_Value_As_String()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.SetValue("title", "This is the new title");
@@ -212,10 +203,10 @@ namespace Umbraco.Tests.Models
public void Can_Clone_Content_With_Reset_Identity()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
content.Id = 10;
content.Key = new Guid("29181B97-CB8F-403F-86DE-5FEB497F4800");
@@ -243,9 +234,9 @@ namespace Umbraco.Tests.Models
public void Can_Deep_Clone_Perf_Test()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.Id = 99;
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
var i = 200;
foreach (var property in content.Properties)
{
@@ -291,12 +282,12 @@ namespace Umbraco.Tests.Models
public void Can_Deep_Clone()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.Id = 99;
contentType.Variations = ContentVariation.Culture;
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
content.SetCultureName("Hello", "en-US");
content.SetCultureName("World", "es-ES");
@@ -313,6 +304,7 @@ namespace Umbraco.Tests.Models
{
property.Id = ++i;
}
content.Id = 10;
content.CreateDate = DateTime.Now;
content.CreatorId = 22;
@@ -326,8 +318,6 @@ namespace Umbraco.Tests.Models
content.UpdateDate = DateTime.Now;
content.WriterId = 23;
// Act
var clone = (Content)content.DeepClone();
@@ -378,20 +368,25 @@ namespace Umbraco.Tests.Models
Assert.AreEqual(clone.CultureInfos[key], content.CultureInfos[key]);
}
//This double verifies by reflection
// This double verifies by reflection
var allProps = clone.GetType().GetProperties();
foreach (var propertyInfo in allProps)
{
Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(content, null));
}
//need to ensure the event handlers are wired
// Need to ensure the event handlers are wired
var asDirty = (ICanBeDirty)clone;
Assert.IsFalse(asDirty.IsPropertyDirty("Properties"));
var propertyType = new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "blah");
var newProperty = new Property(1, propertyType);
var propertyType = new PropertyTypeBuilder()
.WithAlias("blah")
.Build();
var newProperty = new PropertyBuilder()
.WithId(1)
.WithPropertyType(propertyType)
.Build();
newProperty.SetValue("blah");
clone.Properties.Add(newProperty);
@@ -402,12 +397,12 @@ namespace Umbraco.Tests.Models
public void Remember_Dirty_Properties()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.Id = 99;
contentType.Variations = ContentVariation.Culture;
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
content.SetCultureName("Hello", "en-US");
content.SetCultureName("World", "es-ES");
@@ -418,6 +413,7 @@ namespace Umbraco.Tests.Models
{
property.Id = ++i;
}
content.Id = 10;
content.CreateDate = DateTime.Now;
content.CreatorId = 22;
@@ -427,7 +423,6 @@ namespace Umbraco.Tests.Models
content.Path = "-1,4,10";
content.SortOrder = 5;
content.TemplateId = 88;
content.Trashed = true;
content.UpdateDate = DateTime.Now;
content.WriterId = 23;
@@ -454,6 +449,7 @@ namespace Umbraco.Tests.Models
Assert.IsTrue(prop.WasDirty());
Assert.IsTrue(prop.WasPropertyDirty("Id"));
}
Assert.IsTrue(content.WasPropertyDirty("CultureInfos"));
foreach (var culture in content.CultureInfos)
{
@@ -461,6 +457,7 @@ namespace Umbraco.Tests.Models
Assert.IsTrue(culture.WasPropertyDirty("Name"));
Assert.IsTrue(culture.WasPropertyDirty("Date"));
}
Assert.IsTrue(content.WasPropertyDirty("PublishCultureInfos"));
foreach (var culture in content.PublishCultureInfos)
{
@@ -474,16 +471,17 @@ namespace Umbraco.Tests.Models
public void Can_Serialize_Without_Error()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.Id = 99;
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
var i = 200;
foreach (var property in content.Properties)
{
property.Id = ++i;
}
content.Id = 10;
content.CreateDate = DateTime.Now;
content.CreatorId = 22;
@@ -506,8 +504,8 @@ namespace Umbraco.Tests.Models
public void Cannot_Change_Property_With_Invalid_Value()
{
// Arrange
var contentType = MockedContentTypes.CreateTextpageContentType();
var content = MockedContent.CreateTextpageContent(contentType);
var contentType = ContentTypeBuilder.CreateTextpageContentType();
var content = ContentBuilder.CreateTextpageContent(contentType);
// Act
var model = new TestEditorModel
@@ -527,10 +525,10 @@ namespace Umbraco.Tests.Models
public void Can_Change_Property_Value_Through_Anonymous_Object()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.PropertyValues(new { title = "This is the new title" });
@@ -547,10 +545,10 @@ namespace Umbraco.Tests.Models
public void Can_Verify_Dirty_Property_On_Content()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.ResetDirtyProperties();
@@ -565,7 +563,7 @@ namespace Umbraco.Tests.Models
public void Can_Add_PropertyGroup_On_ContentType()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
// Act
contentType.PropertyGroups.Add(new PropertyGroup(true) { Name = "Test Group", SortOrder = 3 });
@@ -578,7 +576,7 @@ namespace Umbraco.Tests.Models
public void Can_Remove_PropertyGroup_From_ContentType()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.ResetDirtyProperties();
// Act
@@ -593,17 +591,14 @@ namespace Umbraco.Tests.Models
public void Can_Add_PropertyType_To_Group_On_ContentType()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
// Act
contentType.PropertyGroups["Content"].PropertyTypes.Add(new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "subtitle")
{
Name = "Subtitle",
Description = "Optional subtitle",
Mandatory = false,
SortOrder = 3,
DataTypeId = -88
});
var propertyType = new PropertyTypeBuilder()
.WithAlias("subtitle")
.WithName("Subtitle")
.Build();
contentType.PropertyGroups["Content"].PropertyTypes.Add(propertyType);
// Assert
Assert.That(contentType.PropertyGroups["Content"].PropertyTypes.Count, Is.EqualTo(3));
@@ -613,20 +608,16 @@ namespace Umbraco.Tests.Models
public void Can_Add_New_Property_To_New_PropertyType()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
var propertyType = new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "subtitle")
{
Name = "Subtitle",
Description = "Optional subtitle",
Mandatory = false,
SortOrder = 3,
DataTypeId = -88
};
var propertyType = new PropertyTypeBuilder()
.WithAlias("subtitle")
.WithName("Subtitle")
.Build();
contentType.PropertyGroups["Content"].PropertyTypes.Add(propertyType);
var newProperty = new Property(propertyType);
newProperty.SetValue("This is a subtitle Test");
@@ -641,20 +632,16 @@ namespace Umbraco.Tests.Models
public void Can_Add_New_Property_To_New_PropertyType_In_New_PropertyGroup()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
var propertyType = new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "subtitle")
{
Name = "Subtitle",
Description = "Optional subtitle",
Mandatory = false,
SortOrder = 3,
DataTypeId = -88
};
var propertyType = new PropertyTypeBuilder()
.WithAlias("subtitle")
.WithName("Subtitle")
.Build();
var propertyGroup = new PropertyGroup(true) { Name = "Test Group", SortOrder = 3 };
propertyGroup.PropertyTypes.Add(propertyType);
contentType.PropertyGroups.Add(propertyGroup);
@@ -672,20 +659,16 @@ namespace Umbraco.Tests.Models
public void Can_Update_PropertyType_Through_Content_Properties()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act - note that the PropertyType's properties like SortOrder is not updated through the Content object
var propertyType = new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "title")
{
Name = "Title",
Description = "Title description added",
Mandatory = false,
SortOrder = 10,
DataTypeId = -88
};
var propertyType = new PropertyTypeBuilder()
.WithAlias("title")
.WithName("Title")
.Build();
content.Properties.Add(new Property(propertyType));
// Assert
@@ -698,11 +681,11 @@ namespace Umbraco.Tests.Models
public void Can_Change_ContentType_On_Content()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var simpleContentType = MockedContentTypes.CreateSimpleContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.ChangeContentType(simpleContentType);
@@ -717,11 +700,11 @@ namespace Umbraco.Tests.Models
public void Can_Change_ContentType_On_Content_And_Set_Property_Value()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var simpleContentType = MockedContentTypes.CreateSimpleContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.ChangeContentType(simpleContentType);
@@ -736,11 +719,11 @@ namespace Umbraco.Tests.Models
public void Can_Change_ContentType_On_Content_And_Still_Get_Old_Properties()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var simpleContentType = MockedContentTypes.CreateSimpleContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
// Act
content.ChangeContentType(simpleContentType);
@@ -761,9 +744,9 @@ namespace Umbraco.Tests.Models
//Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
//// Arrange
//var contentType = MockedContentTypes.CreateTextPageContentType();
//var simpleContentType = MockedContentTypes.CreateSimpleContentType();
//var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
//var contentType = ContentTypeBuilder.CreateTextPageContentType();
//var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
//var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
//// Act
//content.ChangeContentType(simpleContentType, true);
@@ -777,10 +760,10 @@ namespace Umbraco.Tests.Models
[Test]
public void Can_Verify_Content_Is_Published()
{
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "Textpage", -1);
content.ResetDirtyProperties();
content.PublishedState = PublishedState.Publishing;
@@ -813,7 +796,7 @@ namespace Umbraco.Tests.Models
public void Adding_PropertyGroup_To_ContentType_Results_In_Dirty_Entity()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.ResetDirtyProperties();
// Act
@@ -830,7 +813,7 @@ namespace Umbraco.Tests.Models
public void After_Committing_Changes_Was_Dirty_Is_True()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.ResetDirtyProperties(); //reset
// Act
@@ -847,11 +830,11 @@ namespace Umbraco.Tests.Models
public void After_Committing_Changes_Was_Dirty_Is_True_On_Changed_Property()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.ResetDirtyProperties(); //reset
Mock.Get(_contentTypeService).As<IContentTypeBaseService>().Setup(x => x.Get(It.IsAny<int>())).Returns(contentType);
var content = MockedContent.CreateTextpageContent(contentType, "test", -1);
var content = ContentBuilder.CreateTextpageContent(contentType, "test", -1);
content.ResetDirtyProperties();
// Act
@@ -880,7 +863,7 @@ namespace Umbraco.Tests.Models
public void If_Not_Committed_Was_Dirty_Is_False()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
// Act
contentType.Alias = "newAlias";
@@ -894,7 +877,7 @@ namespace Umbraco.Tests.Models
public void Detect_That_A_Property_Is_Removed()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
Assert.That(contentType.WasPropertyDirty("HasPropertyTypeBeenRemoved"), Is.False);
// Act
@@ -908,18 +891,14 @@ namespace Umbraco.Tests.Models
public void Adding_PropertyType_To_PropertyGroup_On_ContentType_Results_In_Dirty_Entity()
{
// Arrange
var contentType = MockedContentTypes.CreateTextPageContentType();
var contentType = ContentTypeBuilder.CreateTextPageContentType();
contentType.ResetDirtyProperties();
// Act
var propertyType = new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "subtitle")
{
Name = "Subtitle",
Description = "Optional subtitle",
Mandatory = false,
SortOrder = 3,
DataTypeId = -88
};
var propertyType = new PropertyTypeBuilder()
.WithAlias("subtitle")
.WithName("Subtitle")
.Build();
contentType.PropertyGroups["Content"].PropertyTypes.Add(propertyType);
// Assert
@@ -932,20 +911,13 @@ namespace Umbraco.Tests.Models
public void Can_Compose_Composite_ContentType_Collection()
{
// Arrange
var simpleContentType = MockedContentTypes.CreateSimpleContentType();
var simple2ContentType = MockedContentTypes.CreateSimpleContentType("anotherSimple", "Another Simple Page",
new PropertyTypeCollection(true,
new List<PropertyType>
{
new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "coauthor")
{
Name = "Co-Author",
Description = "Name of the Co-Author",
Mandatory = false,
SortOrder = 4,
DataTypeId = -88
}
}));
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
var propertyType = new PropertyTypeBuilder()
.WithAlias("coauthor")
.WithName("Co-author")
.Build();
var simple2ContentType = ContentTypeBuilder.CreateSimpleContentType("anotherSimple", "Another Simple Page",
propertyTypeCollection: new PropertyTypeCollection(true, new List<PropertyType> { propertyType }));
// Act
var added = simpleContentType.AddContentType(simple2ContentType);
@@ -962,21 +934,14 @@ namespace Umbraco.Tests.Models
public void Can_Compose_Nested_Composite_ContentType_Collection()
{
// Arrange
var metaContentType = MockedContentTypes.CreateMetaContentType();
var simpleContentType = MockedContentTypes.CreateSimpleContentType();
var simple2ContentType = MockedContentTypes.CreateSimpleContentType("anotherSimple", "Another Simple Page",
new PropertyTypeCollection(true,
new List<PropertyType>
{
new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "coauthor")
{
Name = "Co-Author",
Description = "Name of the Co-Author",
Mandatory = false,
SortOrder = 4,
DataTypeId = -88
}
}));
var metaContentType = ContentTypeBuilder.CreateMetaContentType();
var simpleContentType = ContentTypeBuilder.CreateSimpleContentType();
var propertyType = new PropertyTypeBuilder()
.WithAlias("coauthor")
.WithName("Co-author")
.Build();
var simple2ContentType = ContentTypeBuilder.CreateSimpleContentType("anotherSimple", "Another Simple Page",
propertyTypeCollection: new PropertyTypeCollection(true, new List<PropertyType> { propertyType }));
// Act
var addedMeta = simple2ContentType.AddContentType(metaContentType);
@@ -995,33 +960,21 @@ namespace Umbraco.Tests.Models
[Test]
public void Can_Avoid_Circular_Dependencies_In_Composition()
{
var textPage = MockedContentTypes.CreateTextPageContentType();
var parent = MockedContentTypes.CreateSimpleContentType("parent", "Parent", null, true);
var meta = MockedContentTypes.CreateMetaContentType();
var mixin1 = MockedContentTypes.CreateSimpleContentType("mixin1", "Mixin1", new PropertyTypeCollection(true,
new List<PropertyType>
{
new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "coauthor")
{
Name = "Co-Author",
Description = "Name of the Co-Author",
Mandatory = false,
SortOrder = 4,
DataTypeId = -88
}
}));
var mixin2 = MockedContentTypes.CreateSimpleContentType("mixin2", "Mixin2", new PropertyTypeCollection(true,
new List<PropertyType>
{
new PropertyType(ShortStringHelper, "test", ValueStorageType.Ntext, "author")
{
Name = "Author",
Description = "Name of the Author",
Mandatory = false,
SortOrder = 4,
DataTypeId = -88
}
}));
var textPage = ContentTypeBuilder.CreateTextPageContentType();
var parent = ContentTypeBuilder.CreateSimpleContentType("parent", "Parent", null, randomizeAliases: true);
var meta = ContentTypeBuilder.CreateMetaContentType();
var propertyType1 = new PropertyTypeBuilder()
.WithAlias("coauthor")
.WithName("Co-author")
.Build();
var mixin1 = ContentTypeBuilder.CreateSimpleContentType("mixin1", "Mixin1",
propertyTypeCollection: new PropertyTypeCollection(true, new List<PropertyType> { propertyType1 }));
var propertyType2 = new PropertyTypeBuilder()
.WithAlias("author")
.WithName("Author")
.Build();
var mixin2 = ContentTypeBuilder.CreateSimpleContentType("mixin2", "Mixin2",
propertyTypeCollection: new PropertyTypeCollection(true, new List<PropertyType> { propertyType2 }));
// Act
var addedMetaMixin2 = mixin2.AddContentType(meta);

View File

@@ -3,13 +3,12 @@ using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class ContentTypeTests

View File

@@ -2,7 +2,7 @@
using NUnit.Framework;
using Umbraco.Core.Models;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class CultureImpactTests

View File

@@ -5,7 +5,7 @@ using System.Linq;
using NUnit.Framework;
using Umbraco.Core.Models;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class DeepCloneHelperTests

View File

@@ -4,7 +4,7 @@ using NUnit.Framework;
using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class DictionaryItemTests

View File

@@ -6,7 +6,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class DictionaryTranslationTests

View File

@@ -4,7 +4,7 @@ using NUnit.Framework;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class DocumentEntityTests

View File

@@ -4,7 +4,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class LanguageTests

View File

@@ -6,7 +6,7 @@ using Umbraco.Core.Models.Entities;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class MacroTests

View File

@@ -6,7 +6,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class MemberGroupTests

View File

@@ -1,14 +1,12 @@
using System;
using System.Diagnostics;
using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class MemberTests

View File

@@ -6,7 +6,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class PropertyGroupTests

View File

@@ -5,7 +5,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class PropertyTests

View File

@@ -8,7 +8,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class PropertyTypeTests

View File

@@ -6,7 +6,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class RelationTests

View File

@@ -5,7 +5,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class RelationTypeTests

View File

@@ -6,7 +6,7 @@ using NUnit.Framework;
using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class StylesheetTests

View File

@@ -8,7 +8,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class TemplateTests

View File

@@ -8,7 +8,7 @@ using Umbraco.Core.Models.Entities;
using Umbraco.Core.Services;
using Umbraco.Tests.Common.Builders;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class UserExtensionsTests

View File

@@ -1,5 +1,4 @@
using System;
using System.Diagnostics;
using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using NUnit.Framework;
@@ -7,7 +6,7 @@ using Umbraco.Core.Models.Membership;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class UserTests

View File

@@ -3,69 +3,21 @@ using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Services;
using Umbraco.Core.Strings;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
using Current = Umbraco.Web.Composing.Current;
using Umbraco.Web.PropertyEditors;
namespace Umbraco.Tests.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Core.Models
{
[TestFixture]
public class VariationTests
{
private IFactory _factory;
private IShortStringHelper ShortStringHelper { get; } = TestHelper.ShortStringHelper;
[SetUp]
public void SetUp()
{
// well, this is also annoying, but...
// validating a value is performed by its data editor,
// based upon the configuration in the data type, so we
// need to be able to retrieve them all...
Current.Reset();
_factory = Mock.Of<IFactory>();
var dataTypeService = Mock.Of<IDataTypeService>();
var localizationService = Mock.Of<ILocalizationService>();
var dataEditors = new DataEditorCollection(new IDataEditor[]
{
new DataEditor(NullLoggerFactory.Instance, Mock.Of<IDataTypeService>(), Mock.Of<ILocalizationService>(), Mock.Of<ILocalizedTextService>(), Mock.Of<IShortStringHelper>()) { Alias = "editor", ExplicitValueEditor = MockedValueEditors.CreateDataValueEditor("view") }
});
var propertyEditors = new PropertyEditorCollection(dataEditors);
var dataType = Mock.Of<IDataType>();
Mock.Get(dataType)
.Setup(x => x.Configuration)
.Returns(null);
Mock.Get(dataTypeService)
.Setup(x => x.GetDataType(It.IsAny<int>()))
.Returns<int>(x => dataType);
var serviceContext = ServiceContext.CreatePartial(
dataTypeService: dataTypeService,
localizedTextService: Mock.Of<ILocalizedTextService>());
Mock.Get(_factory)
.Setup(x => x.GetInstance(It.IsAny<Type>()))
.Returns<Type>(x =>
{
//if (x == typeof(Configs)) return configs;
if (x == typeof(PropertyEditorCollection)) return propertyEditors;
if (x == typeof(ServiceContext)) return serviceContext;
if (x == typeof(ILocalizedTextService)) return serviceContext.LocalizationService;
throw new NotSupportedException(x.FullName);
});
}
[Test]
public void ValidateVariationTests()
{
@@ -292,8 +244,10 @@ namespace Umbraco.Tests.Models
[Test]
public void ContentNames()
{
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.Build();
var content = CreateContent(contentType);
const string langFr = "fr-FR";
const string langUk = "en-UK";
@@ -305,7 +259,7 @@ namespace Umbraco.Tests.Models
contentType.Variations = ContentVariation.Culture;
// recreate content to re-capture content type variations
content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
content = CreateContent(contentType);
// invariant name works
content.Name = "name";
@@ -333,11 +287,15 @@ namespace Umbraco.Tests.Models
{
const string langFr = "fr-FR";
var propertyType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop" };
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var propertyType = new PropertyTypeBuilder()
.WithAlias("prop")
.Build();
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.Build();
contentType.AddPropertyType(propertyType);
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var content = CreateContent(contentType);
// can set value
// and get edited value, published is null
@@ -419,7 +377,8 @@ namespace Umbraco.Tests.Models
Assert.IsNull(content.GetValue("prop"));
Assert.IsNull(content.GetValue("prop", published: true));
var other = new Content("other", -1, contentType) { Id = 2, VersionId = 1 };
var other = CreateContent(contentType, 2, "other");
Assert.Throws<NotSupportedException>(() => other.SetValue("prop", "o")); // don't even try
other.SetValue("prop", "o1", langFr);
@@ -441,26 +400,32 @@ namespace Umbraco.Tests.Models
[Test]
public void ContentPublishValuesWithMixedPropertyTypeVariations()
{
var propertyValidationService = new PropertyValidationService(
_factory.GetInstance<PropertyEditorCollection>(),
_factory.GetInstance<ServiceContext>().DataTypeService,
_factory.GetInstance<ServiceContext>().TextService);
var propertyValidationService = GetPropertyValidationService();
const string langFr = "fr-FR";
// content type varies by Culture
// prop1 varies by Culture
// prop2 is invariant
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.Build();
contentType.Variations |= ContentVariation.Culture;
var variantPropType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop1", Variations = ContentVariation.Culture, Mandatory = true };
var invariantPropType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop2", Variations = ContentVariation.Nothing, Mandatory = true};
var variantPropType = new PropertyTypeBuilder()
.WithAlias("prop1")
.WithVariations(ContentVariation.Culture)
.WithMandatory(true)
.Build();
var invariantPropType = new PropertyTypeBuilder()
.WithAlias("prop2")
.WithVariations(ContentVariation.Nothing)
.WithMandatory(true)
.Build();
contentType.AddPropertyType(variantPropType);
contentType.AddPropertyType(invariantPropType);
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var content = CreateContent(contentType);
content.SetCultureName("hello", langFr);
@@ -490,11 +455,15 @@ namespace Umbraco.Tests.Models
const string langUk = "en-UK";
const string langEs = "es-ES";
var propertyType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop" };
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var propertyType = new PropertyTypeBuilder()
.WithAlias("prop")
.Build();
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.Build();
contentType.AddPropertyType(propertyType);
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var content = CreateContent(contentType);
// change - now we vary by culture
contentType.Variations |= ContentVariation.Culture;
@@ -545,12 +514,16 @@ namespace Umbraco.Tests.Models
[Test]
public void IsDirtyTests()
{
var propertyType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop" };
var propertyType = new PropertyTypeBuilder()
.WithAlias("prop")
.Build();
var prop = new Property(propertyType);
var contentType = new ContentType(ShortStringHelper, -1) { Alias = "contentType" };
var contentType = new ContentTypeBuilder()
.WithAlias("contentType")
.Build();
contentType.AddPropertyType(propertyType);
var content = new Content("content", -1, contentType) { Id = 1, VersionId = 1 };
var content = CreateContent(contentType);
prop.SetValue("a");
Assert.AreEqual("a", prop.GetValue());
@@ -570,17 +543,17 @@ namespace Umbraco.Tests.Models
[Test]
public void ValidationTests()
{
var propertyType = new PropertyType(ShortStringHelper, "editor", ValueStorageType.Nvarchar) { Alias = "prop", SupportsPublishing = true };
var propertyType = new PropertyTypeBuilder()
.WithAlias("prop")
.WithSupportsPublishing(true)
.Build();
var prop = new Property(propertyType);
prop.SetValue("a");
Assert.AreEqual("a", prop.GetValue());
Assert.IsNull(prop.GetValue(published: true));
var propertyValidationService = new PropertyValidationService(
_factory.GetInstance<PropertyEditorCollection>(),
_factory.GetInstance<ServiceContext>().DataTypeService,
_factory.GetInstance<ServiceContext>().TextService
);
var propertyValidationService = GetPropertyValidationService();
Assert.IsTrue(propertyValidationService.IsPropertyValid(prop));
@@ -593,5 +566,43 @@ namespace Umbraco.Tests.Models
// can publish, even though invalid
prop.PublishValues();
}
private static Content CreateContent(IContentType contentType, int id = 1, string name = "content")
{
return new ContentBuilder()
.WithId(id)
.WithVersionId(1)
.WithName(name)
.WithContentType(contentType)
.Build();
}
private static PropertyValidationService GetPropertyValidationService()
{
var ioHelper = Mock.Of<IIOHelper>();
var dataTypeService = Mock.Of<IDataTypeService>();
var localizedTextService = Mock.Of<ILocalizedTextService>();
var localizationService = Mock.Of<ILocalizationService>();
var shortStringHelper = Mock.Of<IShortStringHelper>();
var textBoxEditor = new TextboxPropertyEditor(
NullLoggerFactory.Instance,
dataTypeService,
localizationService,
ioHelper,
shortStringHelper,
localizedTextService
);
var mockDataTypeService = new Mock<IDataTypeService>();
Mock.Get(dataTypeService).Setup(x => x.GetDataType(It.Is<int>(y => y == Constants.DataTypes.Textbox)))
.Returns(new DataType(textBoxEditor));
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(new[] { textBoxEditor }));
return new PropertyValidationService(
propertyEditorCollection,
dataTypeService,
localizedTextService);
}
}
}

View File

@@ -3,10 +3,10 @@ using Umbraco.Core.Models;
using Umbraco.Infrastructure.Media;
using Umbraco.Web.Models;
namespace Umbraco.Tests.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Media
{
[TestFixture]
public class ImageProcessorImageUrlGeneratorTest
public class ImageSharpImageUrlGeneratorTests
{
private const string MediaPath = "/media/1005/img_0671.jpg";
private static readonly ImageUrlGenerationOptions.CropCoordinates Crop = new ImageUrlGenerationOptions.CropCoordinates(0.58729977382575338m, 0.055768992440203169m, 0m, 0.32457553600198386m);

View File

@@ -4,7 +4,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastucture.Models
{
[TestFixture]
public class DataTypeTests

View File

@@ -7,7 +7,7 @@ using Umbraco.Core.Models.Entities;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastucture.Models
{
[TestFixture]
public class PathValidationTests

View File

@@ -141,6 +141,7 @@
<Compile Include="Models\ContentXmlTest.cs" />
<Compile Include="Models\ImageProcessorImageUrlGeneratorTest.cs" />
<Compile Include="Models\VariationTests.cs" />
<Compile Include="Persistence\Mappers\MapperTestBase.cs" />
<Compile Include="PublishedContent\SolidPublishedSnapshot.cs" />
<Compile Include="Published\ConvertersTests.cs" />
<Compile Include="Published\ModelTypeTests.cs" />
@@ -285,7 +286,6 @@
<Compile Include="PublishedContent\PublishedContentTests.cs" />
<Compile Include="PublishedContent\PublishedMediaTests.cs" />
<Compile Include="Web\Mvc\HtmlHelperExtensionMethodsTests.cs" />
<Compile Include="Models\ContentTests.cs" />
<Compile Include="Persistence\SqlCeTableByTableTest.cs" />
<Compile Include="Persistence\DatabaseContextTests.cs" />
<Compile Include="Persistence\NPocoTests\NPocoSqlTests.cs" />
@@ -439,6 +439,9 @@
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ItemGroup>
<Folder Include="Integration\" />
</ItemGroup>
<!-- get NuGet packages directory -->
<PropertyGroup>
<NuGetPackages>$(NuGetPackageFolders.Split(';')[0])</NuGetPackages>