Glass.Mapper.Sc.DataMappers.SitecoreNodeMapper.MapToProperty C# (CSharp) Method

MapToProperty() public method

Maps data from the CMS value to the .Net property value
public MapToProperty ( AbstractDataMappingContext mappingContext ) : object
mappingContext AbstractDataMappingContext The mapping context.
return object
        public override object MapToProperty(AbstractDataMappingContext mappingContext)
        {
            var scConfig = Configuration as SitecoreNodeConfiguration;
            var scContext = mappingContext as SitecoreDataMappingContext;
            var item = scContext.Item;

            Item targetItem = null;

            if (scConfig.Id.IsNotNullOrEmpty())
            {
                var guid = Guid.Empty;

                if (Guid.TryParse(scConfig.Id, out guid) && guid != Guid.Empty)
                {
                    targetItem = item.Database.GetItem(new ID(guid), item.Language);
                }
            }
            else if (!scConfig.Path.IsNullOrEmpty())
            {
                targetItem = item.Database.GetItem(scConfig.Path, item.Language);
            }

            if (targetItem == null || !scContext.Service.ItemVersionHandler.VersionCountEnabledAndHasVersions(targetItem))
            {
                return null;
            }
            else
            {
                return scContext.Service.CreateType(scConfig.PropertyInfo.PropertyType, targetItem, scConfig.IsLazy,
                                                     scConfig.InferType, null);
            }

        }

Usage Example

        public void MapToProperty_GetItemByPathInferType_ReturnsItem()
        {
            //Assign
            var config = new SitecoreNodeConfiguration();
            var context = Context.Create(Utilities.CreateStandardResolver());
            var mapper = new SitecoreNodeMapper();
            var language = LanguageManager.GetLanguage("en");
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            mapper.Setup(new DataMapperResolverArgs(context, config));

            var obj = new Stub();
            var source = Database.GetItem("/sitecore/content/Tests/DataMappers/SitecoreNodeMapper/Source", language);
            var target = Database.GetItem("/sitecore/content/Tests/DataMappers/SitecoreNodeMapper/Target", language);
            var service = Substitute.For<ISitecoreService>();
            var itemVersionHandler = Substitute.For<IItemVersionHandler>();
            itemVersionHandler.VersionCountEnabledAndHasVersions(Arg.Any<Item>()).Returns(true);
            service.ItemVersionHandler.Returns(itemVersionHandler);

            var expected = new StubMapped();

            config.PropertyInfo = typeof(Stub).GetProperty("StubMapped");
            config.Path = "/sitecore/content/Tests/DataMappers/SitecoreNodeMapper/Target";
            config.InferType = true;

            service.CreateType(
                typeof(StubMapped),
                Arg.Is<Item>(x => x.Paths.FullPath == target.Paths.FullPath && x.Language == language),
                false,
                true, null).Returns(expected);

            var mappingContext = new SitecoreDataMappingContext(obj, source, service);

            //Act
            var result = mapper.MapToProperty(mappingContext);

            //Assert
            Assert.AreEqual(expected, result);

        }
All Usage Examples Of Glass.Mapper.Sc.DataMappers.SitecoreNodeMapper::MapToProperty