Fix concurrency issue in UmbracoMapper (#13524)

* Add logging to UmbracoMapper

* Add NullLogger to tests

Co-authored-by: Zeegaan <nge@umbraco.dk>
This commit is contained in:
Nikolaj Geisle
2022-12-05 12:25:55 +01:00
committed by GitHub
parent 4aa0378431
commit e992da7159
6 changed files with 42 additions and 20 deletions

View File

@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Events;
@@ -44,7 +45,7 @@ public class MappingTests
public void SimpleMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition1() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
var thing1 = new Thing1 { Value = "value" };
var thing2 = mapper.Map<Thing1, Thing2>(thing1);
@@ -66,7 +67,7 @@ public class MappingTests
public void EnumerableMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition1() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
var thing1A = new Thing1 { Value = "valueA" };
var thing1B = new Thing1 { Value = "valueB" };
@@ -97,7 +98,7 @@ public class MappingTests
public void InheritedMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition1() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
var thing3 = new Thing3 { Value = "value" };
var thing2 = mapper.Map<Thing3, Thing2>(thing3);
@@ -119,7 +120,7 @@ public class MappingTests
public void CollectionsMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition2() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
// can map a PropertyCollection
var source = new PropertyCollection();
@@ -135,7 +136,7 @@ public class MappingTests
new MapperDefinition1(),
new MapperDefinition3(),
});
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
// the mapper currently has a map from Thing1 to Thing2
// because Thing3 inherits from Thing1, it will map a Thing3 instance,
@@ -191,7 +192,7 @@ public class MappingTests
public void EnumMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition4() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
var thing5 = new Thing5 { Fruit1 = Thing5Enum.Apple, Fruit2 = Thing5Enum.Banana, Fruit3 = Thing5Enum.Cherry };
@@ -207,7 +208,7 @@ public class MappingTests
public void NullPropertyMap()
{
var definitions = new MapDefinitionCollection(() => new IMapDefinition[] { new MapperDefinition5() });
var mapper = new UmbracoMapper(definitions, _scopeProvider);
var mapper = new UmbracoMapper(definitions, _scopeProvider, NullLogger<UmbracoMapper>.Instance);
var thing7 = new Thing7();

View File

@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
@@ -50,7 +51,7 @@ public class MemberManagerTests
_fakeMemberStore = new MemberUserStore(
_mockMemberService.Object,
new UmbracoMapper(new MapDefinitionCollection(() => mapDefinitions), scopeProvider),
new UmbracoMapper(new MapDefinitionCollection(() => mapDefinitions), scopeProvider, NullLogger<UmbracoMapper>.Instance),
scopeProvider,
new IdentityErrorDescriber(),
Mock.Of<IPublishedSnapshotAccessor>(),

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Events;
@@ -42,7 +43,7 @@ public class MemberUserStoreTests
return new MemberUserStore(
_mockMemberService.Object,
new UmbracoMapper(new MapDefinitionCollection(() => new List<IMapDefinition>()), mockScopeProvider.Object),
new UmbracoMapper(new MapDefinitionCollection(() => new List<IMapDefinition>()), mockScopeProvider.Object, NullLogger<UmbracoMapper>.Instance),
mockScopeProvider.Object,
new IdentityErrorDescriber(),
Mock.Of<IPublishedSnapshotAccessor>(),

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Configuration.Models;
@@ -101,7 +102,8 @@ public class DatabaseSettingsFactoryTests
{
var mapper = new UmbracoMapper(
new MapDefinitionCollection(Enumerable.Empty<IMapDefinition>),
Mock.Of<ICoreScopeProvider>());
Mock.Of<ICoreScopeProvider>(),
NullLogger<UmbracoMapper>.Instance);
var definition = new InstallerViewModelsMapDefinition();
definition.DefineMaps(mapper);

View File

@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
@@ -587,7 +588,7 @@ public class MemberControllerUnitTests
It.IsAny<bool>(),
It.IsAny<bool>()) == Mock.Of<ICoreScope>());
_mapper = new UmbracoMapper(map, scopeProvider);
_mapper = new UmbracoMapper(map, scopeProvider, NullLogger<UmbracoMapper>.Instance);
return new MemberController(
new DefaultCultureDictionary(