public void Update_WhenChecklistIsNotMapped_UpdatesAnswers()
        {
            // Arrange.
            var request = new TestRequest { RootText = "abc", RootNumber = 123 };
            var dataContext = new SourceData(request);

            var childMapping1 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Text),
                dc => dc.GetPropertyValue("RootText"),
                false,
                new SafeTypeConverter());
            var childMapping2 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Number),
                dc => dc.GetPropertyValue("RootNumber"),
                true,
                new SafeTypeConverter());

            var dtm = Mock.Create<IDynamicTypeManager>(Behavior.Loose);
            Mock.Arrange(() => dtm.NewEditableChild<IEditableRoot>(AnswerProcessName)).Returns(() => new TestAnswer());

            var mapping = new ChecklistFieldMapping(ReflectionHelper.GetProperty<TestEdit>(x => x.Checklist), null, new[] { childMapping1, childMapping2 }, dtm);

            var editItem = new TestEdit();

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

            // Assert.
            Assert.AreEqual(1, editItem.Checklist.AnswerProcessList.Count);

            var answer = (TestAnswer)editItem.Checklist.AnswerProcessList[0];
            Assert.AreEqual("abc", answer.Text);
            Assert.AreEqual(123, answer.Number);
        }
        public void Update_WhenChecklistIsMapped_UpdatesAnswers()
        {
            // Arrange.
            var request = new TestRequest();
            request.SourceItems.Add(new TestData { Text = "aaa", Number = 111 });
            request.SourceItems.Add(new TestData { Text = "bbb", Number = 222 });

            var dataContext = new SourceData(request);

            var childMapping1 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Text),
                dc => dc.GetPropertyValue("SourceItems.Text"),
                true,
                new SafeTypeConverter());
            var childMapping2 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Number),
                dc => dc.GetPropertyValue("SourceItems.Number"),
                false,
                new SafeTypeConverter());

            var dtm = Mock.Create<IDynamicTypeManager>(Behavior.Loose);
            Mock.Arrange(() => dtm.NewEditableChild<IEditableRoot>(AnswerProcessName)).Returns(() => new TestAnswer());

            var mapping = new ChecklistFieldMapping(
                ReflectionHelper.GetProperty<TestEdit>(x => x.Checklist),
                dc => dc.EnumerateItems("SourceItems"),
                new[] { childMapping1, childMapping2 },
                dtm);

            var editItem = new TestEdit();

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

            // Assert.
            Assert.AreEqual(2, editItem.Checklist.AnswerProcessList.Count);

            var answer1 = (TestAnswer)editItem.Checklist.AnswerProcessList[0];
            Assert.AreEqual("aaa", answer1.Text);
            Assert.AreEqual(111, answer1.Number);

            var answer2 = (TestAnswer)editItem.Checklist.AnswerProcessList[1];
            Assert.AreEqual("bbb", answer2.Text);
            Assert.AreEqual(222, answer2.Number);
        }