public void Ctor() { CachingEntityMemberRequestFactory cachingEntityMemberRequestFactory; IEntityMemberRequestFactory entityMemberRequestFactory; entityMemberRequestFactory = new EntityMemberRequestFactory(); cachingEntityMemberRequestFactory = new CachingEntityMemberRequestFactory(entityMemberRequestFactory); Assert.That(cachingEntityMemberRequestFactory, Has.Property("Factory").EqualTo(entityMemberRequestFactory)); Assert.That(cachingEntityMemberRequestFactory, Has.Property("Cache").Count.EqualTo(0)); Assert.That(cachingEntityMemberRequestFactory, Has.Property("CacheInvalidator").Not.Null); }
public void BuildEntityMemberRequest_NoRelationships() { EntityType entityType; EntityMemberRequest entityMemberRequest; entityType = new EntityType(); entityType.Save(); entityMemberRequest = new EntityMemberRequestFactory().BuildEntityMemberRequest(entityType, new[] { Permissions.Read }); Assert.That(entityMemberRequest, Has.Property("Relationships").Empty); Assert.That(entityMemberRequest, Has.Property("Fields").Empty); }
public void BuildEntityMemberRequest_TwoEntitiesInCycle(bool securesFrom, bool securesTo) { EntityType entityType1; EntityType entityType2; Relationship fromRelationship; Relationship toRelationship; EntityMemberRequest entityMemberRequest; IList <EntityRef> expectedRelationshipTypeIds; entityType1 = new EntityType(); entityType1.Save(); entityType2 = new EntityType(); entityType2.Save(); fromRelationship = new Relationship(); fromRelationship.SecuresTo = securesTo; fromRelationship.ToType = entityType2; fromRelationship.FromType = entityType1; fromRelationship.Save(); toRelationship = new Relationship(); toRelationship.SecuresFrom = securesFrom; toRelationship.ToType = entityType1; toRelationship.FromType = entityType2; toRelationship.Save(); entityType2.Relationships.Add(toRelationship); entityType2.ReverseRelationships.Add(fromRelationship); entityType2.Save(); entityMemberRequest = new EntityMemberRequestFactory().BuildEntityMemberRequest(entityType2, new [] { Permissions.Read }); expectedRelationshipTypeIds = new List <EntityRef>(); if (securesTo) { expectedRelationshipTypeIds.Add(new EntityRef(fromRelationship)); } if (securesFrom) { expectedRelationshipTypeIds.Add(new EntityRef(toRelationship)); } Assert.That(entityMemberRequest.Relationships.Select(r => r.RelationshipTypeId), Is.EquivalentTo(expectedRelationshipTypeIds).Using(EntityRefComparer.Instance)); }
public void BuildEntityMemberRequest_ToAndFromRelationshipToSelf(bool securesFrom, bool securesTo) { EntityType entityType; Relationship reverseRelationship; Relationship forwardRelationship; EntityMemberRequest entityMemberRequest; IList <EntityRef> expectedRelationshipTypeIds; entityType = new EntityType(); reverseRelationship = new Relationship(); reverseRelationship.SecuresTo = securesTo; reverseRelationship.ToType = entityType; reverseRelationship.FromType = new EntityType(); reverseRelationship.Save(); forwardRelationship = new Relationship(); forwardRelationship.SecuresFrom = securesFrom; forwardRelationship.ToType = new EntityType(); forwardRelationship.FromType = entityType; forwardRelationship.Save(); entityType.Relationships.Add(forwardRelationship); entityType.ReverseRelationships.Add(reverseRelationship); entityType.Save(); entityMemberRequest = new EntityMemberRequestFactory().BuildEntityMemberRequest(entityType, new [] { Permissions.Read }); expectedRelationshipTypeIds = new List <EntityRef>(); if (securesTo) { expectedRelationshipTypeIds.Add(new EntityRef(reverseRelationship)); } if (securesFrom) { expectedRelationshipTypeIds.Add(new EntityRef(forwardRelationship)); } Assert.That(entityMemberRequest.Relationships.Select(r => r.RelationshipTypeId), Is.EquivalentTo(expectedRelationshipTypeIds).Using(EntityRefComparer.Instance)); }
public void BuildEntityMemberRequest_RelationshipsWithFlagsUnset() { EntityType entityType; Relationship fromRelationship; Relationship toRelationship; EntityMemberRequest entityMemberRequest; fromRelationship = new Relationship(); fromRelationship.Save(); toRelationship = new Relationship(); toRelationship.Save(); entityType = new EntityType(); entityType.Relationships.Add(toRelationship); entityType.ReverseRelationships.Add(fromRelationship); entityType.Save(); entityMemberRequest = new EntityMemberRequestFactory().BuildEntityMemberRequest(entityType, new [] { Permissions.Read }); Assert.That(entityMemberRequest, Has.Property("Relationships").Empty); Assert.That(entityMemberRequest, Has.Property("Fields").Empty); }
public void BuildEntityMemberRequest_TreeSecuredByMultipleRoots(string entityType, string expectedRelationships) { Dictionary <string, EntityType> entityTypes; Dictionary <string, Relationship> relationships; EntityMemberRequest entityMemberRequest; IList <IEntityRef> expectedRelationshipTypeIds; IList <IEntityRef> actualRelationshipTypeIds; // Build the following entity/relationship graph: // // root1 // | // -> parentEntityType1 // | // -> childEntityType11 // | // -> parentEntityType2 // | // root2 const string rootEntityType1 = "rootEntityType1"; const string parentEntityType1 = "parentEntityType1"; const string childEntityType11 = "childEntityType11"; const string parentEntityType2 = "parentEntityType2"; const string rootEntityType2 = "rootEntityType2"; const string root1ToParent1 = "root1ToParent1"; const string parent1ToChild11 = "parent1ToChild11"; const string parent2ToChild11 = "parent2ToChild11"; const string root2ToParent2 = "root2ToParent2"; // Create the types entityTypes = new Dictionary <string, EntityType>(); foreach (string type in new[] { rootEntityType1, parentEntityType1, childEntityType11, parentEntityType2, rootEntityType2 }) { entityTypes[type] = new EntityType(); entityTypes[type].Save(); } // Create relationships and assign the to types for each relationships = new Dictionary <string, Relationship>(); foreach (KeyValuePair <string, string> relationshipToEntityType in new Dictionary <string, string> { { root1ToParent1, parentEntityType1 }, { parent1ToChild11, childEntityType11 }, { parent2ToChild11, childEntityType11 }, { root2ToParent2, parentEntityType2 } }) { relationships[relationshipToEntityType.Key] = new Relationship { SecuresTo = true, ToType = entityTypes[relationshipToEntityType.Value] }; relationships[relationshipToEntityType.Key].Save(); } // Add each relationship to the originating (from) entity type foreach ( KeyValuePair <string, IEnumerable <string> > entityTypeToRelationship in new Dictionary <string, IEnumerable <string> > { { rootEntityType1, new[] { root1ToParent1 } }, { parentEntityType1, new[] { parent1ToChild11 } }, { parentEntityType2, new[] { parent2ToChild11 } }, { rootEntityType2, new[] { root2ToParent2 } } }) { entityTypes[entityTypeToRelationship.Key].Relationships.AddRange( entityTypeToRelationship.Value.Select(r => relationships[r])); entityTypes[entityTypeToRelationship.Key].Save(); } entityMemberRequest = new EntityMemberRequestFactory().BuildEntityMemberRequest(entityTypes[entityType], new [] { Permissions.Read }); expectedRelationshipTypeIds = expectedRelationships.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(s => new EntityRef(relationships[s])) .ToList <IEntityRef>(); actualRelationshipTypeIds = Delegates.WalkGraph(entityMemberRequest.Relationships, rr => rr.RequestedMembers.Relationships) .Select(rr => rr.RelationshipTypeId) .ToList <IEntityRef>(); Assert.That(actualRelationshipTypeIds, Is.EquivalentTo(expectedRelationshipTypeIds).Using(EntityRefComparer.Instance)); }