public void UpdateTest()
        {
            // Arrange.
            const string TextValue = "Text Value";

            var value = new object();

            var typeConverter = new Mock<ITypeConverter>();
            typeConverter.Setup(x => x.Convert(value, typeof(string))).Returns(TextValue);

            var dataContext = Mock.Create<IDataContext>(Behavior.Loose);

            var mapping = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestEditable>(x => x.Text),
                dc => dc == dataContext ? value : null,
                false,
                typeConverter.Object);

            var editItem = new TestEditable();

            // Act.
            mapping.Update(dataContext, editItem);

            // Assert.
            Assert.AreEqual(TextValue, editItem.Text);
        }
        public void UpdateLocalizedFieldTest()
        {
            // Arrange.
            var dataContext = Mock.Create<IDataContext>(Behavior.Loose);

            var mapping = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestEditable>(x => x.Localized),
                dc => dc == dataContext ? GetLocalizedValue() : null,
                false,
                new SafeTypeConverter());


            var editItem = new TestEditable();

            // Act.
            mapping.Update(dataContext, editItem);

            // Assert.
            Assert.AreEqual("English Text", editItem.Localized_en_US);
            Assert.AreEqual("Spanish Text", editItem.Localized_es_ES);
            Assert.AreEqual("French Text", editItem.Localized_fr_FR);
        }
        public void UpdateIdTest()
        {
            // Arrange.
            const int Id = 123;

            var value = new object();

            var typeConverter = new Mock<ITypeConverter>();
            typeConverter.Setup(x => x.Convert<int>(value)).Returns(Id);
            typeConverter.Setup(x => x.Convert<int>(Id)).Returns(Id);

            var dataContext = Mock.Create<IDataContext>(Behavior.Loose);

            var mapping = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestEditable>(x => x.Id),
                dc => dc == dataContext ? value : null,
                false,
                typeConverter.Object);

            var editItem = new TestEditable();

            // Act.
            mapping.Update(dataContext, editItem);

            // Assert.
            Assert.AreEqual(Id, editItem.Id);
            Assert.IsTrue(editItem.DisableIdGeneration);
        }
        public void UpdateCurrentStateTest()
        {
            // Arrange.
            const string StateName = "State 1";

            var state1 = new Mock<IState>();
            state1.Setup(x => x.Id).Returns(111);
            state1.Setup(x => x.Name).Returns("State 1");

            var state2 = new Mock<IState>();
            state2.Setup(x => x.Id).Returns(222);
            state2.Setup(x => x.Name).Returns("State 2");

            var stateManager = new StateManager();
            stateManager.States.Add(state1.Object);
            stateManager.States.Add(state2.Object);

            var value = new object();

            var typeConverter = new Mock<ITypeConverter>();
            typeConverter.Setup(x => x.Convert<string>(value)).Returns(StateName);
            typeConverter.Setup(x => x.Convert<string>(StateName)).Returns(StateName);

            var dataContext = Mock.Create<IDataContext>(Behavior.Loose);
            var mapping = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestEditable>(x => x.CurrentState),
                dc => dc == dataContext ? value : null,
                false,
                typeConverter.Object);

            var editItem = new TestEditable { StateManager = stateManager };

            // Act.
            mapping.Update(dataContext, editItem);

            // Assert.
            Assert.AreEqual(111, editItem.CurrentState);
        }