public void Add_An_Object_Graph()
        {
            //arrange
            var bodyParameter = new EqualsBinaryOperatorParameters
                                (
                new MemberSelectorOperatorParameters("FullName", new ParameterOperatorParameters(parameterName)),
                new ConstantOperatorParameters("Roger Milla")
                                );

            //act
            DoTest <StudentModel, Student>
            (
                bodyParameter,
                null,
                new SelectExpandDefinitionParameters
            {
                ExpandedItems = new List <SelectExpandItemParameters>
                {
                    new SelectExpandItemParameters {
                        MemberName = "Enrollments"
                    }
                }
            },
                parameterName,
                (StudentModel studentModel, ISchoolRepository repository) =>
            {
                PersistenceOperations <StudentModel, Student> .SaveGraph
                (
                    repository,
                    new StudentModel
                {
                    EntityState    = LogicBuilder.Domain.EntityStateType.Added,
                    EnrollmentDate = new DateTime(2021, 2, 8),
                    Enrollments    = new List <EnrollmentModel>
                    {
                        new EnrollmentModel {
                            CourseID = 1050, Grade = Domain.Entities.Grade.A
                        },
                        new EnrollmentModel {
                            CourseID = 4022, Grade = Domain.Entities.Grade.A
                        },
                        new EnrollmentModel {
                            CourseID = 4041, Grade = Domain.Entities.Grade.A
                        }
                    },
                    FirstName = "Roger",
                    LastName  = "Milla"
                }
                );
            },
                returnValue =>
            {
                Assert.Equal(new DateTime(2021, 2, 8), returnValue.EnrollmentDate);
                Assert.Equal(3, returnValue.Enrollments.Count());
            },
                "$it => ($it.FullName == \"Roger Milla\")"
            );
        }
        public void Add_An_Entry_To_A_Child_Collection()
        {
            //arrange
            var bodyParameter = new EqualsBinaryOperatorParameters
                                (
                new MemberSelectorOperatorParameters("FullName", new ParameterOperatorParameters(parameterName)),
                new ConstantOperatorParameters("Carson Alexander")
                                );

            //act
            DoTest <StudentModel, Student>
            (
                bodyParameter,
                null,
                new SelectExpandDefinitionParameters
            {
                ExpandedItems = new List <SelectExpandItemParameters>
                {
                    new SelectExpandItemParameters {
                        MemberName = "Enrollments"
                    }
                }
            },
                parameterName,
                (StudentModel studentModel, ISchoolRepository repository) =>
            {
                studentModel.EnrollmentDate = new DateTime(2021, 2, 8);
                studentModel.Enrollments.Add
                (
                    new EnrollmentModel
                {
                    CourseID    = 3141,
                    Grade       = Domain.Entities.Grade.B,
                    EntityState = LogicBuilder.Domain.EntityStateType.Added
                }
                );

                studentModel.EntityState = LogicBuilder.Domain.EntityStateType.Modified;

                PersistenceOperations <StudentModel, Student> .SaveGraph(repository, studentModel);
            },
                returnValue =>
            {
                Assert.Equal(new DateTime(2021, 2, 8), returnValue.EnrollmentDate);
                Assert.Equal(Domain.Entities.Grade.B, returnValue.Enrollments.Single(e => e.CourseID == 3141).Grade);
                Assert.Equal(4, returnValue.Enrollments.Count());
            },
                "$it => ($it.FullName == \"Carson Alexander\")"
            );
        }