diff --git a/Source/Glass.Mapper/Pipelines/DataMapperResolver/Tasks/DataMapperAttributeResolverTask.cs b/Source/Glass.Mapper/Pipelines/DataMapperResolver/Tasks/DataMapperAttributeResolverTask.cs index fe6e487e2..89e07c83e 100644 --- a/Source/Glass.Mapper/Pipelines/DataMapperResolver/Tasks/DataMapperAttributeResolverTask.cs +++ b/Source/Glass.Mapper/Pipelines/DataMapperResolver/Tasks/DataMapperAttributeResolverTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -65,8 +65,8 @@ public override void Execute(DataMapperResolverArgs args) "Specified data mapper {0} cannot handle this property. {1}".Formatted(mapperType.FullName, args.PropertyConfiguration)); } - args.Result= mapper; - return; + mapper.Setup(args); + args.Result = mapper; } } diff --git a/Tests/Unit Tests/Glass.Mapper.Tests/Pipelines/DataMapperResolver/DataMapperAttributeResolverTaskFixture.cs b/Tests/Unit Tests/Glass.Mapper.Tests/Pipelines/DataMapperResolver/DataMapperAttributeResolverTaskFixture.cs index 5d0b2987a..6b22ecca3 100644 --- a/Tests/Unit Tests/Glass.Mapper.Tests/Pipelines/DataMapperResolver/DataMapperAttributeResolverTaskFixture.cs +++ b/Tests/Unit Tests/Glass.Mapper.Tests/Pipelines/DataMapperResolver/DataMapperAttributeResolverTaskFixture.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -78,6 +78,26 @@ public void Execute_DataMapperAttributeLoadedFromMapperCollection_SetsResultToSp Assert.AreEqual(mapper, args.Result); } + [Test] + public void Execute_DataMapperAttribute_InvokesSetupMethod() + { + //Assign + var task = new DataMapperAttributeResolverTask(); + var configuration = Substitute.For(); + configuration.PropertyInfo = typeof(StubClass).GetProperty("StubMapperProperty"); + + var args = new DataMapperResolverArgs(null, configuration); + args.DataMappers = Enumerable.Empty(); + + //Act + task.Execute(args); + + //Assert + var mapper = args.Result as StubMapper; + Assert.IsNotNull(mapper); + Assert.IsTrue(mapper.SetupInvoked); + } + public class StubClass { [DataMapper(typeof(StubMapper))] @@ -100,6 +120,8 @@ public class StubMapper : AbstractDataMapper { public AbstractDataMappingContext MappingContext { get; set; } + public bool SetupInvoked { get; private set; } + public override void MapToCms(AbstractDataMappingContext mappingContext) { throw new NotImplementedException(); @@ -114,6 +136,12 @@ public override bool CanHandle(AbstractPropertyConfiguration configuration, Cont { return true; } + + public override void Setup(DataMapperResolverArgs args) + { + base.Setup(args); + SetupInvoked = true; + } } public class StubMapperCannotHandle : StubMapper