Merge pull request #9995 from umbraco/v8/feature/10615-mappers-with-explicit-scope

Create explicit scope for mappers in UmbracoMapper
This commit is contained in:
Mole
2021-04-07 14:58:39 +02:00
committed by GitHub
3 changed files with 77 additions and 16 deletions

View File

@@ -1,17 +1,40 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using Moq;
using NUnit.Framework;
using Umbraco.Core.Events;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models;
using Umbraco.Core.Scoping;
using Umbraco.Web.Models.ContentEditing;
using PropertyCollection = Umbraco.Core.Models.PropertyCollection;
namespace Umbraco.Tests.Mapping
{
[TestFixture]
public class MappingTests
{
private IScopeProvider _scopeProvider;
[SetUp]
public void MockScopeProvider()
{
var scopeMock = new Mock<IScopeProvider>();
scopeMock.Setup(x => x.CreateScope(
It.IsAny<IsolationLevel>(),
It.IsAny<RepositoryCacheMode>(),
It.IsAny<IEventDispatcher>(),
It.IsAny<bool?>(),
It.IsAny<bool>(),
It.IsAny<bool>()))
.Returns(Mock.Of<IScope>);
_scopeProvider = scopeMock.Object;
}
[Test]
public void SimpleMap()
{
@@ -19,7 +42,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition1(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var thing1 = new Thing1 { Value = "value" };
var thing2 = mapper.Map<Thing1, Thing2>(thing1);
@@ -44,7 +67,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition1(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var thing1A = new Thing1 { Value = "valueA" };
var thing1B = new Thing1 { Value = "valueB" };
@@ -78,7 +101,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition1(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var thing3 = new Thing3 { Value = "value" };
var thing2 = mapper.Map<Thing3, Thing2>(thing3);
@@ -103,7 +126,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition2(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
// can map a PropertyCollection
var source = new PropertyCollection();
@@ -119,7 +142,7 @@ namespace Umbraco.Tests.Mapping
new MapperDefinition1(),
new MapperDefinition3(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
// the mapper currently has a map from Thing1 to Thing2
// because Thing3 inherits from Thing1, it will map a Thing3 instance,
@@ -179,7 +202,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition4(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var thing5 = new Thing5()
{
@@ -203,7 +226,7 @@ namespace Umbraco.Tests.Mapping
{
new MapperDefinition5(),
});
var mapper = new UmbracoMapper(definitions);
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var thing7 = new Thing7();

View File

@@ -1,4 +1,5 @@
using System;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web.Security;
@@ -9,11 +10,13 @@ using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Persistence;
using Umbraco.Core.Scoping;
using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Stubs;
@@ -98,10 +101,21 @@ namespace Umbraco.Tests.Testing.TestingTests
{
var umbracoContext = TestObjects.GetUmbracoContextMock();
var scopeProvider = new Mock<IScopeProvider>();
scopeProvider
.Setup(x => x.CreateScope(
It.IsAny<IsolationLevel>(),
It.IsAny<RepositoryCacheMode>(),
It.IsAny<IEventDispatcher>(),
It.IsAny<bool?>(),
It.IsAny<bool>(),
It.IsAny<bool>()))
.Returns(Mock.Of<IScope>);
var membershipHelper = new MembershipHelper(umbracoContext.HttpContext, Mock.Of<IPublishedMemberCache>(), Mock.Of<MembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IUserService>(), Mock.Of<IPublicAccessService>(), Mock.Of<AppCaches>(), Mock.Of<ILogger>());
var umbracoHelper = new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(), Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>(), membershipHelper);
var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of<IMapDefinition>() }));
var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of<IMapDefinition>() }), scopeProvider.Object);
// ReSharper disable once UnusedVariable
var umbracoApiController = new FakeUmbracoApiController(Mock.Of<IGlobalSettings>(), Mock.Of<IUmbracoContextAccessor>(), Mock.Of<ISqlContext>(), ServiceContext.CreatePartial(), AppCaches.NoCache, Mock.Of<IProfilingLogger>(), Mock.Of<IRuntimeState>(), umbracoHelper, umbracoMapper);