Ejemplo n.º 1
0
        public void DeepCopyEntity_CopiesEntity_IncludingRelations()
        {
            // Arrange
            var originalLeft = HiveModelCreationHelper.MockTypedEntity(true);

            originalLeft.RelationProxies.LazyLoadDelegate = x => new RelationProxyBucket();
            var originalRight = HiveModelCreationHelper.MockTypedEntity(true);

            originalRight.RelationProxies.LazyLoadDelegate = x => new RelationProxyBucket();

            originalLeft.RelationProxies.EnlistChild(
                originalRight,
                FixedRelationTypes.DefaultRelationType,
                0,
                new RelationMetaDatum("testkey", "testvalue"));

            originalRight.RelationProxies.EnlistParent(
                originalLeft,
                FixedRelationTypes.DefaultRelationType,
                0,
                new RelationMetaDatum("testkey", "testvalue"));

            // Guard against bad test data
            foreach (var attribute in originalLeft.Attributes)
            {
                Assert.AreNotEqual(HiveId.Empty, attribute.Id);
                Assert.NotNull(attribute.AttributeDefinition);
                Assert.AreNotEqual(HiveId.Empty, attribute.AttributeDefinition.Id);
            }

            Thread.Sleep(250); // Ensure copy dates are newer

            //Act & Assert
            var copyLeft = EntityExtensions.CreateDeepCopy(originalLeft);

            DoAssertDeepCopiedEntityToSameParent(copyLeft, originalLeft);
            DoAssertDeepCopiedEntityChildren(copyLeft, originalLeft);

            var copyRight = EntityExtensions.CreateDeepCopy(originalRight);

            DoAssertDeepCopiedEntityToSameParent(copyRight, originalRight);
            DoAssertDeepCopiedEntityChildren(copyRight, originalRight);
        }