Migrated ContentServiceTests.

This commit is contained in:
Andy Butland
2020-10-11 22:31:54 +02:00
parent 31e87c0f31
commit ef962b6934
8 changed files with 998 additions and 770 deletions

View File

@@ -5,6 +5,7 @@ using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders.Interfaces;
using Umbraco.Tests.Common.Builders.Extensions;
using Umbraco.Tests.Testing;
using Umbraco.Core;
namespace Umbraco.Tests.Common.Builders
{
@@ -122,10 +123,7 @@ namespace Umbraco.Tests.Common.Builders
Content content;
if (parent != null)
{
content = new Content(name, parent, contentType, culture)
{
ParentId = parent.Id
};
content = new Content(name, parent, contentType, culture);
}
else
{
@@ -272,6 +270,37 @@ namespace Umbraco.Tests.Common.Builders
return list;
}
public static Content CreateAllTypesContent(IContentType contentType, string name, int parentId)
{
var content = new ContentBuilder()
.WithName(name)
.WithParentId(parentId)
.WithContentType(contentType)
.Build();
content.SetValue("isTrue", true);
content.SetValue("number", 42);
content.SetValue("bodyText", "Lorem Ipsum Body Text Test");
content.SetValue("singleLineText", "Single Line Text Test");
content.SetValue("multilineText", "Multiple lines \n in one box");
content.SetValue("upload", "/media/1234/koala.jpg");
content.SetValue("label", "Non-editable label");
content.SetValue("dateTime", DateTime.Now.AddDays(-20));
content.SetValue("colorPicker", "black");
content.SetValue("ddlMultiple", "1234,1235");
content.SetValue("rbList", "random");
content.SetValue("date", DateTime.Now.AddDays(-10));
content.SetValue("ddl", "1234");
content.SetValue("chklist", "randomc");
content.SetValue("contentPicker", Udi.Create(Constants.UdiEntityType.Document, new Guid("74ECA1D4-934E-436A-A7C7-36CC16D4095C")).ToString());
content.SetValue("mediaPicker", Udi.Create(Constants.UdiEntityType.Media, new Guid("44CB39C8-01E5-45EB-9CF8-E70AAF2D1691")).ToString());
content.SetValue("memberPicker", Udi.Create(Constants.UdiEntityType.Member, new Guid("9A50A448-59C0-4D42-8F93-4F1D55B0F47D")).ToString());
content.SetValue("multiUrlPicker", "[{\"name\":\"https://test.com\",\"url\":\"https://test.com\"}]");
content.SetValue("tags", "this,is,tags");
return content;
}
int? IWithIdBuilder.Id
{
get => _id;

View File

@@ -154,7 +154,7 @@ namespace Umbraco.Tests.Common.Builders
.WithAlias(RandomAlias("bodyText", randomizeAliases))
.WithName("Body text")
.WithSortOrder(2)
.WithDataTypeId(-87)
.WithDataTypeId(Constants.DataTypes.RichtextEditor)
.WithMandatory(mandatoryProperties)
.Done()
.AddPropertyType()
@@ -173,6 +173,23 @@ namespace Umbraco.Tests.Common.Builders
.Build();
}
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 propertyType = new PropertyTypeBuilder()
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Tags)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithAlias(RandomAlias("tags", randomizeAliases))
.WithName("Tags")
.WithDataTypeId(Constants.DataTypes.Tags)
.WithSortOrder(99)
.Build();
contentType.AddPropertyType(propertyType);
return contentType;
}
public static ContentType CreateTextPageContentType(string alias = "textPage", string name = "Text Page", int defaultTemplateId = 1)
{
var builder = new ContentTypeBuilder();
@@ -195,7 +212,7 @@ namespace Umbraco.Tests.Common.Builders
.WithAlias("bodyText")
.WithName("Body text")
.WithSortOrder(2)
.WithDataTypeId(-87)
.WithDataTypeId(Constants.DataTypes.RichtextEditor)
.Done()
.Done()
.AddPropertyGroup()
@@ -268,6 +285,171 @@ namespace Umbraco.Tests.Common.Builders
.Build();
}
public static ContentType CreateAllTypesContentType(string alias, string name)
{
var builder = new ContentTypeBuilder();
return (ContentType)builder
.WithAlias(alias)
.WithName(name)
.AddPropertyGroup()
.WithName("Content")
.WithSupportsPublishing(true)
.AddPropertyType()
.WithAlias("isTrue")
.WithName("Is True or False")
.WithDataTypeId(Constants.DataTypes.Boolean)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Boolean)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(1)
.Done()
.AddPropertyType()
.WithAlias("number")
.WithName("Number")
.WithDataTypeId(-51)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Integer)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(2)
.Done()
.AddPropertyType()
.WithAlias("bodyText")
.WithName("Body Text")
.WithDataTypeId(Constants.DataTypes.RichtextEditor)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.TinyMce)
.WithValueStorageType(ValueStorageType.Ntext)
.WithSortOrder(3)
.Done()
.AddPropertyType()
.WithAlias("singleLineText")
.WithName("Text String")
.WithDataTypeId(Constants.DataTypes.Textbox)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.TextBox)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(4)
.Done()
.AddPropertyType()
.WithAlias("multilineText")
.WithName("Multiple Text Strings")
.WithDataTypeId(Constants.DataTypes.Textarea)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.TextArea)
.WithValueStorageType(ValueStorageType.Ntext)
.WithSortOrder(5)
.Done()
.AddPropertyType()
.WithAlias("upload")
.WithName("Upload Field")
.WithDataTypeId(Constants.DataTypes.Upload)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.UploadField)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(6)
.Done()
.AddPropertyType()
.WithAlias("label")
.WithName("Label")
.WithDataTypeId(Constants.DataTypes.LabelString)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Label)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(7)
.Done()
.AddPropertyType()
.WithAlias("dateTime")
.WithName("Date Time")
.WithDataTypeId(Constants.DataTypes.DateTime)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.DateTime)
.WithValueStorageType(ValueStorageType.Date)
.WithSortOrder(8)
.Done()
.AddPropertyType()
.WithAlias("colorPicker")
.WithName("Color Picker")
.WithDataTypeId(-37)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.ColorPicker)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(9)
.Done()
.AddPropertyType()
.WithAlias("ddlMultiple")
.WithName("Dropdown List Multiple")
.WithDataTypeId(Constants.DataTypes.DropDownMultiple)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.DropDownListFlexible)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(11)
.Done()
.AddPropertyType()
.WithAlias("rbList")
.WithName("Radio Button List")
.WithDataTypeId(-40)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.RadioButtonList)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(12)
.Done()
.AddPropertyType()
.WithAlias("date")
.WithName("Date")
.WithDataTypeId(-36)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.DateTime)
.WithValueStorageType(ValueStorageType.Date)
.WithSortOrder(13)
.Done()
.AddPropertyType()
.WithAlias("ddl")
.WithName("Dropdown List")
.WithDataTypeId(Constants.DataTypes.DropDownSingle)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.DropDownListFlexible)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(14)
.Done()
.AddPropertyType()
.WithAlias("chklist")
.WithName("Checkbox List")
.WithDataTypeId(-43)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.CheckBoxList)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(15)
.Done()
.AddPropertyType()
.WithAlias("contentPicker")
.WithName("Content Picker")
.WithDataTypeId(1046)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.ContentPicker)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(16)
.Done()
.AddPropertyType()
.WithAlias("mediaPicker")
.WithName("Media Picker")
.WithDataTypeId(1048)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.MediaPicker)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(17)
.Done()
.AddPropertyType()
.WithAlias("memberPicker")
.WithName("Member Picker")
.WithDataTypeId(1047)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.MemberPicker)
.WithValueStorageType(ValueStorageType.Integer)
.WithSortOrder(18)
.Done()
.AddPropertyType()
.WithAlias("multiUrlPicker")
.WithName("Multi URL Picker")
.WithDataTypeId(1050)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.MultiUrlPicker)
.WithValueStorageType(ValueStorageType.Nvarchar)
.WithSortOrder(19)
.Done()
.AddPropertyType()
.WithAlias("tags")
.WithName("Tags")
.WithDataTypeId(Constants.DataTypes.Tags)
.WithPropertyEditorAlias(Constants.PropertyEditors.Aliases.Tags)
.WithValueStorageType(ValueStorageType.Ntext)
.WithSortOrder(20)
.Done()
.Done()
.Build();
}
int? IWithPropertyTypeIdsIncrementingFrom.PropertyTypeIdsIncrementingFrom
{
get => _propertyTypeIdsIncrementingFrom;

View File

@@ -37,10 +37,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories
[SetUp]
public void SetUp()
{
var testHelper = new TestHelper();
_fileSystems = Mock.Of<IFileSystems>();
var viewsFileSystem = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), LoggerFactory.CreateLogger<PhysicalFileSystem>(), Constants.SystemDirectories.MvcViews);
Mock.Get(_fileSystems).Setup(x => x.MvcViewsFileSystem).Returns(viewsFileSystem);
_fileSystems = GetMockFileSystems();
}
[Test]

View File

@@ -289,7 +289,6 @@ namespace Umbraco.Tests.Integration.Testing
#region LocalDb
private static readonly object _dbLocker = new object();
private static LocalDbTestDatabase _dbInstance;
@@ -479,6 +478,15 @@ namespace Umbraco.Tests.Integration.Testing
protected GlobalSettings GlobalSettings => Services.GetRequiredService<IOptions<GlobalSettings>>().Value;
protected IMapperCollection Mappers => Services.GetRequiredService<IMapperCollection>();
protected IFileSystems GetMockFileSystems()
{
var testHelper = new TestHelper();
var fileSystems = Mock.Of<IFileSystems>();
var viewsFileSystem = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), LoggerFactory.CreateLogger<PhysicalFileSystem>(), Constants.SystemDirectories.MvcViews);
Mock.Get(fileSystems).Setup(x => x.MvcViewsFileSystem).Returns(viewsFileSystem);
return fileSystems;
}
#endregion
#region Builders

View File

@@ -0,0 +1,54 @@
using System;
using Umbraco.Core.Services;
using Umbraco.Core.Services.Implement;
using Umbraco.Tests.Common.Builders;
namespace Umbraco.Tests.Integration.Testing
{
public abstract class UmbracoIntegrationTestWithContent : UmbracoIntegrationTest
{
protected IContentTypeService ContentTypeService => GetRequiredService<IContentTypeService>();
protected IFileService FileService => GetRequiredService<IFileService>();
protected ContentService ContentService => (ContentService)GetRequiredService<IContentService>();
protected int NodeIdSeed => 1050;
public override void Setup()
{
base.Setup();
CreateTestData();
}
public virtual void CreateTestData()
{
//NOTE Maybe not the best way to create/save test data as we are using the services, which are being tested.
// Create and Save ContentType "umbTextpage" -> 1051 (template), 1052 (content type)
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);
contentType.Key = new Guid("1D3A8E6E-2EA9-4CC1-B229-1AEE19821522");
ContentTypeService.Save(contentType);
// Create and Save Content "Homepage" based on "umbTextpage" -> 1053
var textpage = ContentBuilder.CreateSimpleContent(contentType);
textpage.Key = new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0");
ContentService.Save(textpage, 0);
// Create and Save Content "Text Page 1" based on "umbTextpage" -> 1054
var subpage = ContentBuilder.CreateSimpleContent(contentType, "Text Page 1", textpage.Id);
subpage.ContentSchedule.Add(DateTime.Now.AddMinutes(-5), null);
ContentService.Save(subpage, 0);
// Create and Save Content "Text Page 1" based on "umbTextpage" -> 1055
var subpage2 = ContentBuilder.CreateSimpleContent(contentType, "Text Page 2", textpage.Id);
ContentService.Save(subpage2, 0);
// Create and Save Content "Text Page Deleted" based on "umbTextpage" -> 1056
var trashed = ContentBuilder.CreateSimpleContent(contentType, "Text Page Deleted", -20);
trashed.Trashed = true;
ContentService.Save(trashed, 0);
}
}
}

View File

@@ -3,6 +3,7 @@ using Newtonsoft.Json;
using NUnit.Framework;
using Umbraco.Core.Models;
using Umbraco.Tests.Common.Builders;
using Umbraco.Tests.Common.Builders.Extensions;
namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
{
@@ -21,6 +22,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models
public void Can_Deep_Clone()
{
var item = _builder
.WithId(1)
.WithParentObjectType(Guid.NewGuid())
.WithChildObjectType(Guid.NewGuid())
.Build();

View File

@@ -152,6 +152,7 @@
<Compile Include="Scoping\ScopeEventDispatcherTests.cs" />
<Compile Include="Security\OwinDataProtectorTokenProviderTests.cs" />
<Compile Include="Persistence\Repositories\UserRepositoryTest.cs" />
<Compile Include="Services\TestWithSomeContentBase.cs" />
<Compile Include="TestHelpers\Entities\MockedContent.cs" />
<Compile Include="TestHelpers\Entities\MockedContentTypes.cs" />
<Compile Include="TestHelpers\Entities\MockedEntity.cs" />
@@ -318,9 +319,7 @@
<Compile Include="Routing\DomainsAndCulturesTests.cs" />
<Compile Include="Routing\SiteDomainHelperTests.cs" />
<Compile Include="Routing\UrlsWithNestedDomains.cs" />
<Compile Include="Services\TestWithSomeContentBase.cs" />
<Compile Include="Services\ContentServicePerformanceTest.cs" />
<Compile Include="Services\ContentServiceTests.cs" />
<Compile Include="Packaging\PackageDataInstallationTests.cs" />
<Compile Include="Services\Importing\ImportResources.Designer.cs">
<AutoGen>True</AutoGen>