public void ShouldSeeChangeToBasePropertyWhenBaseObject() { var detector = new DerivedChangeDetector(); var tracker = new EntityChangeTracker <TestEntity>(detector); DerivedEntity entity = new DerivedEntity() { IntValue = 123 }; tracker.Attach(entity); entity.IntValue = 234; var changes = tracker.DetectChanges(); Assert.AreEqual(1, changes.Count(), "The wrong number of changes were detected."); IEntityChange <TestEntity> change = changes.Single(); Assert.AreSame(entity, change.Entity, "A change was detected on the wrong entity."); Assert.AreEqual(EntityState.Modified, change.State, "The entity should have been modified."); Assert.AreEqual(1, change.GetChanges().Count(), "The wrong number of properties were seen as changed."); var propertyChange = change.GetChanges().Single(); Assert.AreEqual(TestEntityChangeDetector.IntDescription, propertyChange.DisplayName, "The wrong property was recorded."); bool hasBaseChange = change.HasChange(x => x.IntValue); Assert.IsTrue(hasBaseChange, "The change was not detected."); bool hasDerivedChange = change.As <DerivedEntity>().HasChange(x => x.IntValue); Assert.IsTrue(hasDerivedChange, "The change was not detected."); }
public async Task ODataTypeAnnotationAppearsForAllEntitiesInFullMetadataAndForDerivedEntityTypesInFullAndMinimalMetadata( string acceptHeader) { //Arrange BaseEntity[] baseEntities = new BaseEntity[] { new BaseEntity(1), new BaseEntity(2), new BaseEntity(3), new BaseEntity(4), new BaseEntity(5), new BaseEntity(6), new BaseEntity(7) }; //InstanceCreator.CreateInstanceOf<BaseEntity[]>(new Random(RandomSeedGenerator.GetRandomSeed())); DerivedEntity[] derivedEntities = new DerivedEntity[] { new DerivedEntity(8), new DerivedEntity(9), new DerivedEntity(10), new DerivedEntity(11), new DerivedEntity(12), new DerivedEntity(13), new DerivedEntity(14) }; //InstanceCreator.CreateInstanceOf<DerivedEntity[]>(new Random(RandomSeedGenerator.GetRandomSeed())); BaseEntity[] entities = baseEntities.Union(derivedEntities, new BaseEntity.IdEqualityComparer()).ToArray(); string requestUrl = BaseAddress.ToLowerInvariant() + "/Inheritance/BaseEntity/"; string expectedTypeName; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.SetAcceptHeader(acceptHeader); //Act HttpResponseMessage response = await Client.SendAsync(request); JObject result = await response.Content.ReadAsObject <JObject>(); //Assert JArray returnedEntities = (JArray)result["value"]; for (int i = 0; i < returnedEntities.Count; i++) { JObject returnedEntity = (JObject)returnedEntities[i]; BaseEntity originalEntity = entities.FirstOrDefault(x => x.Id == (int)returnedEntity["Id"]); Assert.NotNull(originalEntity); if (acceptHeader.Contains("odata.metadata=none")) { JsonAssert.DoesNotContainProperty("@odata.type", returnedEntity); } else if (acceptHeader.Contains("odata.metadata=full")) { expectedTypeName = "#" + originalEntity.GetType().FullName; JsonAssert.PropertyEquals(expectedTypeName, "@odata.type", returnedEntity); } else { if (originalEntity is DerivedEntity) { expectedTypeName = "#" + originalEntity.GetType().FullName; JsonAssert.PropertyEquals(expectedTypeName, "@odata.type", returnedEntity); } else { JsonAssert.DoesNotContainProperty("@odata.type", returnedEntity); } } } }
protected override void OnSetUp() { using (ISession session = OpenSession()) using (ITransaction transaction = session.BeginTransaction()) { var e1 = new DerivedEntity { Name = "Bob" }; session.Save(e1); var e2 = new AnotherDerivedEntity { Name = "Sally" }; session.Save(e2); session.Flush(); transaction.Commit(); } }
public void ShouldSeeChangeToNonDerivedProperty() { var detector = new DerivedChangeDetector(); DerivedEntity original = new DerivedEntity() { IntValue = 123 }; DerivedEntity updated = new DerivedEntity() { IntValue = 234 }; bool hasChange = detector.As <DerivedEntity>().HasChange(x => x.IntValue, original, updated); Assert.IsTrue(hasChange, "The change was not detected."); }
public BaseEntityController() : base("Id") { BaseEntity[] baseEntities = new BaseEntity[] { new BaseEntity(1), new BaseEntity(2), new BaseEntity(3), new BaseEntity(4), new BaseEntity(5), new BaseEntity(6), new BaseEntity(7) }; DerivedEntity[] derivedEntities = new DerivedEntity[] { new DerivedEntity(8), new DerivedEntity(9), new DerivedEntity(10), new DerivedEntity(11), new DerivedEntity(12), new DerivedEntity(13), new DerivedEntity(14) }; foreach (var entity in baseEntities.Union(derivedEntities, new BaseEntity.IdEqualityComparer())) { LocalTable.AddOrUpdate(entity.Id, entity, (key, oldEntity) => oldEntity); } }
public void ShouldDetectChangeToDerivedProperty_OriginalNull() { var detector = new DerivedChangeDetector(); DerivedEntity original = null; DerivedEntity updated = new DerivedEntity() { DerivedValue = 234 }; var changes = detector.GetChanges(original, updated); Assert.AreEqual(1, changes.Count(), "The wrong number of changes were detected."); IPropertyChange change = changes.Single(); Assert.AreEqual(DerivedChangeDetector.DerivedDescription, change.DisplayName, "The wrong property was recorded."); Assert.AreEqual(null, change.FormatOriginalValue(), "The old value was not recorded."); Assert.AreEqual(Formatters.FormatInt32(updated.DerivedValue), change.FormatUpdatedValue(), "The new value was not recorded."); }
public void ShouldDetectChangeToInheritedProperty() { var detector = new DirectDerivedChangeDetector(); DerivedEntity original = new DerivedEntity() { BooleanValue = false }; DerivedEntity updated = new DerivedEntity() { BooleanValue = true }; var changes = detector.GetChanges(original, updated); Assert.AreEqual(1, changes.Count(), "The wrong number of changes were detected."); IPropertyChange change = changes.Single(); Assert.AreEqual("BooleanValue", change.DisplayName, "The wrong property was recorded."); }
public void ShouldDetectChangeToDerivedPropertyWhenAdding() { var detector = new DerivedChangeDetector(); var tracker = new EntityChangeTracker <TestEntity>(detector); DerivedEntity entity = new DerivedEntity() { DerivedValue = 123 }; tracker.Add(entity); var changes = tracker.DetectChanges(); Assert.AreEqual(1, changes.Count(), "The wrong number of changes were detected."); IEntityChange <TestEntity> change = changes.Single(); Assert.AreSame(entity, change.Entity, "A change was detected on the wrong entity."); Assert.AreEqual(EntityState.Added, change.State, "The entity should have been modified."); Assert.AreEqual(1, change.GetChanges().Count(), "The wrong number of properties were seen as changed."); }
public async Task InheritedEntityInterface() { var query = @" { interfaceGraphConnection { items { ...inheritedEntityFields } } } fragment inheritedEntityFields on Interface { property childrenFromInterface(orderBy: {path: ""property""}) { items { ...childEntityFields } } ... on DerivedWithNavigation { childrenFromDerived(orderBy: {path: ""property""}) { items { ...childEntityFields } } } } fragment childEntityFields on DerivedChild { property }"; var derivedEntity1 = new DerivedEntity { Id = Guid.Parse("00000000-0000-0000-0000-000000000001"), Property = "Value1" }; var childEntity1 = new DerivedChildEntity { Property = "Value2", Parent = derivedEntity1 }; var childEntity2 = new DerivedChildEntity { Property = "Value3", Parent = derivedEntity1 }; derivedEntity1.ChildrenFromBase.Add(childEntity1); derivedEntity1.ChildrenFromBase.Add(childEntity2); var derivedEntity2 = new DerivedWithNavigationEntity { Id = Guid.Parse("00000000-0000-0000-0000-000000000002"), Property = "Value4" }; var childEntity3 = new DerivedChildEntity { Property = "Value5", Parent = derivedEntity2 }; var childEntity4 = new DerivedChildEntity { Property = "Value6", TypedParent = derivedEntity2 }; derivedEntity2.ChildrenFromBase.Add(childEntity3); derivedEntity2.Children.Add(childEntity4); await using var database = await sqlInstance.Build(); await RunQuery(database, query, null, null, false, new object[] { derivedEntity1, childEntity1, childEntity2, derivedEntity2, childEntity3, childEntity4 }); }
public bool Remove(DerivedEntity derived) => derived != null;