private void ReferenceInitBeforeSetStructureField(Session session) { var referencedEntity = new EntityReferencedFromStructure(); var twoLevelStructure = new SecondLevelStructure { X = 10, Y = 10, EntityField = referencedEntity }; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); Assert.That(ReferenceFinder.GetReferencesTo(referencedEntity).Count(), Is.EqualTo(0)); var oneLevelStructure = new FirstLevelStructure { SecondLevelStructure = twoLevelStructure, EntityField = referencedEntity }; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); Assert.That(ReferenceFinder.GetReferencesTo(referencedEntity).Count(), Is.EqualTo(0)); var zeroLevelStructure = new ZeroLevelStructure { FirstLevelStructure = oneLevelStructure, EntityField = referencedEntity }; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); Assert.That(ReferenceFinder.GetReferencesTo(referencedEntity).Count(), Is.EqualTo(0)); var entity = new EntityWithStructure(); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); Assert.That(ReferenceFinder.GetReferencesTo(referencedEntity).Count(), Is.EqualTo(0)); entity.Structure = zeroLevelStructure; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(3)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); var references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); var expectedAssociation = entity.TypeInfo.Fields["Structure.FirstLevelStructure.SecondLevelStructure.EntityField"].Associations.First(); Assert.That(expectedAssociation.IsPaired, Is.False); Assert.That(expectedAssociation.TargetType, Is.EqualTo(referencedEntity.TypeInfo)); Assert.That(expectedAssociation.OwnerType, Is.EqualTo(entity.TypeInfo)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencingEntity == entity && r.ReferencedEntity == referencedEntity), Is.True); expectedAssociation = entity.TypeInfo.Fields["Structure.FirstLevelStructure.EntityField"].Associations.First(); Assert.That(expectedAssociation.IsPaired, Is.False); Assert.That(expectedAssociation.TargetType, Is.EqualTo(referencedEntity.TypeInfo)); Assert.That(expectedAssociation.OwnerType, Is.EqualTo(entity.TypeInfo)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencingEntity == entity && r.ReferencedEntity == referencedEntity), Is.True); expectedAssociation = entity.TypeInfo.Fields["Structure.EntityField"].Associations.First(); Assert.That(expectedAssociation.IsPaired, Is.False); Assert.That(expectedAssociation.TargetType, Is.EqualTo(referencedEntity.TypeInfo)); Assert.That(expectedAssociation.OwnerType, Is.EqualTo(entity.TypeInfo)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencingEntity == entity && r.ReferencedEntity == referencedEntity), Is.True); }
private void SetStructureWithNestedStructuresSaved(Session session) { var entitiesWithStructure = session.Query.All <EntityWithStructure>().ToList(); var entity = entitiesWithStructure[0]; var referencedEntity = entity.Structure.EntityField; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); var references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); entity.Structure.EntityField = null; entity.Structure.FirstLevelStructure.EntityField = null; entity.Structure.FirstLevelStructure.SecondLevelStructure.EntityField = null; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(3)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); entity = entitiesWithStructure[1]; referencedEntity = entity.Structure.EntityField; references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); var newReferencedEntity = new EntityReferencedFromStructure(); entity = entitiesWithStructure[3]; referencedEntity = entity.Structure.EntityField; references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); entity.Structure.EntityField = newReferencedEntity; entity.Structure.FirstLevelStructure.EntityField = newReferencedEntity; entity.Structure.FirstLevelStructure.SecondLevelStructure.EntityField = newReferencedEntity; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(6)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(3)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); entity = entitiesWithStructure[4]; referencedEntity = entity.Structure.EntityField; newReferencedEntity = new EntityReferencedFromStructure(); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); var struct1 = new ZeroLevelStructure { EntityField = newReferencedEntity, FirstLevelStructure = new FirstLevelStructure { EntityField = newReferencedEntity, SecondLevelStructure = new SecondLevelStructure { EntityField = newReferencedEntity } } }; entity.Structure = struct1; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(9)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(6)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); newReferencedEntity = new EntityReferencedFromStructure(); var struct2 = new FirstLevelStructure { EntityField = newReferencedEntity, SecondLevelStructure = new SecondLevelStructure { EntityField = newReferencedEntity } }; entity = entitiesWithStructure[5]; referencedEntity = entity.Structure.EntityField; references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); entity.Structure.FirstLevelStructure = struct2; var typeInfo = entity.TypeInfo; var tAssociations = typeInfo.GetTargetAssociations(); var oAssociations = typeInfo.GetOwnerAssociations(); typeInfo = newReferencedEntity.TypeInfo; tAssociations = typeInfo.GetTargetAssociations(); oAssociations = typeInfo.GetOwnerAssociations(); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(11)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(8)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(2)); newReferencedEntity = new EntityReferencedFromStructure(); var struct3 = new SecondLevelStructure { EntityField = newReferencedEntity }; entity = entitiesWithStructure[6]; referencedEntity = entity.Structure.EntityField; references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); entity.Structure.FirstLevelStructure.SecondLevelStructure = struct3; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(12)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(9)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(2)); references = ReferenceFinder.GetReferencesTo(newReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); entity = entitiesWithStructure[7]; referencedEntity = entity.Structure.EntityField; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(12)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(9)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); var struct4 = new ZeroLevelStructure { EntityField = referencedEntity, FirstLevelStructure = new FirstLevelStructure { EntityField = referencedEntity, SecondLevelStructure = new SecondLevelStructure { EntityField = referencedEntity } } }; entity.Structure = struct4; Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(12)); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(9)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(3)); }