public void It_maps_relations_to_collections_of_proxy_objects()
        {
            const string relationName = "Children";

            var firstChildObjectId  = ObjectId.NewUniqueId();
            var secondChildObjectId = ObjectId.NewUniqueId();
            var parentObjectState   = new ObjectState(objectId, objectTypeId);

            parentObjectState.Attach(firstChildObjectId, relationName);
            parentObjectState.Attach(secondChildObjectId, relationName);
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(parentObjectState);
            dataFacadeMock.Setup(x => x.GetById(firstChildObjectId, changeSetId)).Returns(new ObjectState(firstChildObjectId, objectTypeId));
            dataFacadeMock.Setup(x => x.GetById(secondChildObjectId, changeSetId)).Returns(new ObjectState(secondChildObjectId, objectTypeId));

            var snapshot = objectFacade.GetSnapshot(changeSetId);
            var o        = snapshot.GetById <TestingObject>(objectId);

            var collection = o.Children;

            Assert.AreEqual(2, collection.Count());
        }
        public void Getting_object_reference_by_traversing_a_relation_preserves_identity_property()
        {
            var parentObjectId = ObjectId.NewUniqueId();
            var thisObjectState = new ObjectState(objectId, objectTypeId);
            thisObjectState.Attach(parentObjectId, "Parent");
            var parentObjectState = new ObjectState(parentObjectId, objectTypeId);
            parentObjectState.Attach(objectId, "Children");
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(thisObjectState);
            dataFacadeMock.Setup(x => x.GetById(parentObjectId, changeSetId)).Returns(parentObjectState);

            var snapshot = objectFacade.GetSnapshot(changeSetId);
            var objectDirectly = snapshot.GetById<TestingObject>(objectId);

            var chidViaParentViaChild = objectDirectly.Parent.Children.First();

            Assert.AreSame(chidViaParentViaChild, objectDirectly);
        }
        public void It_maps_non_single_valued_relations_to_refefences_to_proxy_objects()
        {
            const string relationName = "Parent";

            var parentObjectId  = ObjectId.NewUniqueId();
            var thisObjectState = new ObjectState(objectId, objectTypeId);

            thisObjectState.Attach(parentObjectId, relationName);
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(thisObjectState);
            dataFacadeMock.Setup(x => x.GetById(parentObjectId, changeSetId)).Returns(new ObjectState(parentObjectId, objectTypeId));

            var snapshot = objectFacade.GetSnapshot(changeSetId);
            var o        = snapshot.GetById <TestingObject>(objectId);

            var parent = o.Parent;

            Assert.IsNotNull(parent);
        }
        public void Getting_object_reference_by_traversing_a_relation_preserves_identity_property()
        {
            var parentObjectId  = ObjectId.NewUniqueId();
            var thisObjectState = new ObjectState(objectId, objectTypeId);

            thisObjectState.Attach(parentObjectId, "Parent");
            var parentObjectState = new ObjectState(parentObjectId, objectTypeId);

            parentObjectState.Attach(objectId, "Children");
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(thisObjectState);
            dataFacadeMock.Setup(x => x.GetById(parentObjectId, changeSetId)).Returns(parentObjectState);

            var snapshot       = objectFacade.GetSnapshot(changeSetId);
            var objectDirectly = snapshot.GetById <TestingObject>(objectId);

            var chidViaParentViaChild = objectDirectly.Parent.Children.First();

            Assert.AreSame(chidViaParentViaChild, objectDirectly);
        }
        public void It_maps_non_single_valued_relations_to_refefences_to_proxy_objects()
        {
            const string relationName = "Parent";

            var parentObjectId = ObjectId.NewUniqueId();
            var thisObjectState = new ObjectState(objectId, objectTypeId);
            thisObjectState.Attach(parentObjectId, relationName);
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(thisObjectState);
            dataFacadeMock.Setup(x => x.GetById(parentObjectId, changeSetId)).Returns(new ObjectState(parentObjectId, objectTypeId));

            var snapshot = objectFacade.GetSnapshot(changeSetId);
            var o = snapshot.GetById<TestingObject>(objectId);

            var parent = o.Parent;
            Assert.IsNotNull(parent);
        }
        public void It_maps_relations_to_collections_of_proxy_objects()
        {
            const string relationName = "Children";

            var firstChildObjectId = ObjectId.NewUniqueId();
            var secondChildObjectId = ObjectId.NewUniqueId();
            var parentObjectState = new ObjectState(objectId, objectTypeId);
            parentObjectState.Attach(firstChildObjectId, relationName);
            parentObjectState.Attach(secondChildObjectId, relationName);
            dataFacadeMock.Setup(x => x.GetById(objectId, changeSetId)).Returns(parentObjectState);
            dataFacadeMock.Setup(x => x.GetById(firstChildObjectId, changeSetId)).Returns(new ObjectState(firstChildObjectId, objectTypeId));
            dataFacadeMock.Setup(x => x.GetById(secondChildObjectId, changeSetId)).Returns(new ObjectState(secondChildObjectId, objectTypeId));

            var snapshot = objectFacade.GetSnapshot(changeSetId);
            var o = snapshot.GetById<TestingObject>(objectId);

            var collection = o.Children;
            Assert.AreEqual(2, collection.Count());
        }