public void GetFieldValue_InvalidData_ReturnsNull()
        {
            //Assign
            string path = "agfaegfaeg";

            Item item = _db.GetItem(new ID(_itemId));
            SitecoreFieldClassHandlerFixtureNS.ParentClass parent = new Glass.Sitecore.Mapper.Tests.Data.SitecoreFieldClassHandlerFixtureNS.ParentClass();
            SitecoreProperty property = new SitecoreProperty()
                {
                    Attribute = new SitecoreFieldAttribute(),
                    Property = typeof(SitecoreFieldClassHandlerFixtureNS.ParentClass).GetProperty("Child")
                };
            _handler.ConfigureDataHandler(property);
            
            //Act
            var result = _handler.GetFieldValue(
                path,
                item,               
                _service);

            parent.Child = result as SitecoreFieldClassHandlerFixtureNS.LoadedClass;

            //Assert
            Assert.IsNull(parent.Child);
        }
        public void GetFieldValue_GuidId_SetOnActualUpdatesProxy()
        {
            //Assign
            Item item = _db.GetItem(new ID(_itemId));
            SitecoreFieldClassHandlerFixtureNS.ParentClass parent = new Glass.Sitecore.Mapper.Tests.Data.SitecoreFieldClassHandlerFixtureNS.ParentClass();
            SitecoreProperty property = new SitecoreProperty()
                {
                    Attribute = new SitecoreFieldAttribute(),
                    Property = typeof(SitecoreFieldClassHandlerFixtureNS.ParentClass).GetProperty("Child")
                };

            _handler.ConfigureDataHandler(property);
            
            //Act
            var result = _handler.GetFieldValue(
                _itemId.ToString(),
                item,
                _service) as SitecoreFieldClassHandlerFixtureNS.LoadedClass;

            parent.Child = result;
            parent.Child.CallMe = "Some value";

            //Assert

            var test = result.CallMe;

            Assert.AreEqual(result.CallMe, test);
        }
        public void GetFieldValue_Path_CreatesProxyClass()
        {
            //Assign
            string path = "/sitecore/content/Glass/Test1";

            Item item = _db.GetItem(new ID(_itemId));
            SitecoreFieldClassHandlerFixtureNS.ParentClass parent = new Glass.Sitecore.Mapper.Tests.Data.SitecoreFieldClassHandlerFixtureNS.ParentClass();
            SitecoreProperty property = new SitecoreProperty()
                {
                    Attribute = new SitecoreFieldAttribute(),
                    Property = typeof(SitecoreFieldClassHandlerFixtureNS.ParentClass).GetProperty("Child")
                };
            _handler.ConfigureDataHandler(property);
            
            //Act
            var result = _handler.GetFieldValue(
                path,
                item,
                _service);

            parent.Child = result as SitecoreFieldClassHandlerFixtureNS.LoadedClass;

            //Assert
            Assert.AreNotEqual(typeof(SitecoreFieldClassHandlerFixtureNS.LoadedClass), parent.Child.GetType());

            parent.Child.CallMe = "test";
        }
        public void GetFieldValue_GuidId_CreatesProxyClass_UsingGetOnProperty()
        {
            //Assign
            Item item = _db.GetItem(new ID(_itemId));
            SitecoreFieldClassHandlerFixtureNS.ParentClass parent = new Glass.Sitecore.Mapper.Tests.Data.SitecoreFieldClassHandlerFixtureNS.ParentClass();
            SitecoreProperty property = new SitecoreProperty()
                {
                    Attribute = new SitecoreFieldAttribute(),
                    Property = typeof(SitecoreFieldClassHandlerFixtureNS.ParentClass).GetProperty("Child")
                };

            _handler.ConfigureDataHandler(property);
            //Act
            var result = _handler.GetFieldValue(
                _itemId.ToString(),
                item,
                _service);

            parent.Child = result as SitecoreFieldClassHandlerFixtureNS.LoadedClass;

            //Assert
            Assert.AreNotEqual(typeof(SitecoreFieldClassHandlerFixtureNS.LoadedClass), parent.Child.GetType());

            var callMe = parent.Child.CallMe;
        }