public void ChangeReferenceToSameObjectTest() { Key referencingEntityKey; Key anotherReferencedEntityKey; using (var populateSession = Domain.OpenSession()) using (var transaction = populateSession.OpenTransaction()) { var referencedEntity = new ReferencedEntity(); var anotherReferencedEntity = new ReferencedEntity(); var referencingEntity = new EntityWithOneReference(); referencingEntity.EntityField = referencedEntity; anotherReferencedEntityKey = anotherReferencedEntity.Key; referencingEntityKey = referencingEntity.Key; transaction.Complete(); } using (var session = Domain.OpenSession()) using (var transaction = session.OpenTransaction()) using (session.DisableSaveChanges()) { var referencingEntity = session.Query.Single <EntityWithOneReference>(referencingEntityKey); var referencedEntity = referencingEntity.EntityField; var anotherReferencedEntity = session.Query.Single <ReferencedEntity>(anotherReferencedEntityKey); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); var references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); var expectedAssociation = referencingEntity.TypeInfo.Fields["EntityField"].Associations.First(); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencedEntity == referencedEntity && r.ReferencingEntity == referencingEntity), Is.True); referencingEntity.EntityField = referencedEntity; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencedEntity == referencedEntity && r.ReferencingEntity == referencingEntity), Is.True); referencingEntity.EntityField = null; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(1)); references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); referencingEntity.EntityField = referencedEntity; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencedEntity == referencedEntity && r.ReferencingEntity == referencingEntity), Is.True); } }
public void InitializeReferenceTest() { using (var session = Domain.OpenSession()) using (var transaction = session.OpenTransaction()) using (session.DisableSaveChanges()){ var referencedEntity = new ReferencedEntity(); var referencingEntity = new EntityWithOneReference(); Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); var references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); referencingEntity.EntityField = referencedEntity; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(1)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); var expectedAssociation = referencingEntity.TypeInfo.Fields["EntityField"].Associations.First(); Assert.That(expectedAssociation.IsPaired, Is.False); Assert.That(expectedAssociation.TargetType, Is.EqualTo(referencedEntity.TypeInfo)); Assert.That(expectedAssociation.OwnerType, Is.EqualTo(referencingEntity.TypeInfo)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencedEntity == referencedEntity && r.ReferencingEntity == referencingEntity), Is.True); var anotherReferencedEntity = new ReferencedEntity(); Assert.That(ReferenceFinder.GetReferencesTo(anotherReferencedEntity).Count(), Is.EqualTo(0)); referencingEntity.EntityField = anotherReferencedEntity; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(1)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(1)); Assert.That(references.Any(r => r.Association == expectedAssociation && r.ReferencedEntity == anotherReferencedEntity && r.ReferencingEntity == referencingEntity), Is.True); referencingEntity.EntityField = null; Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0)); Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(referencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); references = ReferenceFinder.GetReferencesTo(anotherReferencedEntity).ToList(); Assert.That(references.Count, Is.EqualTo(0)); } }