public void Eval_one_degree_separation_collection_one_degree_separation_entity_property_indexers_return_entity() { int entity1Id = 1; int entity2Id = 2; MockAssociativeEntity associativeEntity = new MockAssociativeEntity() { RelationalEntity1Id = entity1Id, RelationalEntity2Id = entity2Id, RelationalEntity2 = new MockEntity() { id = entity2Id } }; MockEntity entity = new MockEntity() { id = entity1Id, AssociativeEntities = new HashSet <MockAssociativeEntity>() { associativeEntity } }; string path = ".AssociativeEntities[Guid=" + associativeEntity.Guid + ",RelationalEntity1Id=" + entity1Id + ",RelationalEntity2Id=" + entity2Id + "].RelationalEntity2"; DbEntityDataBinder.BinderResult result = DbEntityDataBinder.Eval(path, entity); Assert.AreEqual(associativeEntity.RelationalEntity2, result.Entity); Assert.AreEqual(path, result.Path); Assert.AreEqual(".AssociativeEntities[RelationalEntity1Id=" + entity1Id + ",RelationalEntity2Id=" + entity2Id + "].RelationalEntity2", result.ActualPath); }
public void BeginEdit_merge_changes_set_collection_for_many_to_x_navigation_property() { MockEntity entity = new MockEntity(); entity.BeginEdit(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity(); associativeEntity.BeginEdit(); associativeEntity.IntProperty = 2; entity.AssociativeEntities = new HashSet <MockAssociativeEntity>() { associativeEntity }; associativeEntity.BoolProperty = true; Assert.AreEqual(3, entity.PropertyChanges().Count()); Assert.IsTrue(entity.PropertyChanges().Any(c => c.DbEntityPropertyPath(entity).Equals(".AssociativeEntities"))); Assert.IsTrue(entity.PropertyChanges().Any(c => c.DbEntityPropertyPath(entity).Equals(".AssociativeEntities[Guid=" + associativeEntity.Guid + "].IntProperty"))); Assert.IsTrue(entity.PropertyChanges().Any(c => c.DbEntityPropertyPath(entity).Equals(".AssociativeEntities[Guid=" + associativeEntity.Guid + "].BoolProperty"))); Should.Throw <ArgumentNullException>(() => associativeEntity.DbEntityChanges()); Assert.IsTrue(entity.IsTracked); Assert.IsTrue(entity.IsEditing); Assert.IsTrue(associativeEntity.IsTracked); Assert.IsFalse(associativeEntity.IsEditing); }
public void SerializeEntity_existing_entity_relational_collection_property_changes() { MockEntity entity = new MockEntity(); MockAssociativeEntity associativeEntity1 = new MockAssociativeEntity(); MockAssociativeEntity associativeEntity2 = new MockAssociativeEntity(); entity.AssociativeEntities.Add(associativeEntity1); entity.AssociativeEntities.Add(associativeEntity2); PropertyChangeTracker tracker = new PropertyChangeTracker(entity); tracker.Start(); associativeEntity1.BoolProperty = true; associativeEntity2.IntProperty = 1; string json = DbEntityJsonConvert.SerializeEntity(entity, tracker.DbEntityChanges()); MockEntity deserialised = TypeExtensions.DeserializeObject <MockEntity>(json); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"Guid\":\"" + entity.Guid + "\",\"AssociativeEntities\":[{\"$id\":\"" + associativeEntity1.Guid + "\",\"Guid\":\"" + associativeEntity1.Guid + "\",\"BoolProperty\":" + associativeEntity1.BoolProperty.ToString().ToLower() + "},{\"$id\":\"" + associativeEntity2.Guid + "\",\"Guid\":\"" + associativeEntity2.Guid + "\",\"IntProperty\":" + associativeEntity2.IntProperty + "}]}", json); Assert.AreEqual(entity.Guid, deserialised.Guid); Assert.AreEqual(associativeEntity1.Guid, deserialised.AssociativeEntities.First().Guid); Assert.AreEqual(associativeEntity1.BoolProperty, deserialised.AssociativeEntities.First().BoolProperty); Assert.AreEqual(associativeEntity2.Guid, deserialised.AssociativeEntities.Last().Guid); Assert.AreEqual(associativeEntity2.IntProperty, deserialised.AssociativeEntities.Last().IntProperty); }
public void SerializePrimaryKeys_zero_and_non_zero() { MockAssociativeEntity entity = new MockAssociativeEntity() { RelationalEntity1Id = 1, RelationalEntity2Id = 0 }; string json = DbEntityJsonConvert.SerializePrimaryKeys(entity); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"Guid\":\"" + entity.Guid + "\",\"RelationalEntity1Id\":" + entity.RelationalEntity1Id + "}", json); }
public void UpdatePrimaryKeys_long_to_int() { MockAssociativeEntity entity = new MockAssociativeEntity(); long entity1Id = 1; long entity2Id = 2; Tuple <string, object>[] primaryKeys = new Tuple <string, object>[] { new Tuple <string, object>("RelationalEntity1Id", entity1Id), new Tuple <string, object>("RelationalEntity2Id", entity2Id) }; U.UpdatePrimaryKeys(primaryKeys, entity); Assert.AreEqual(entity1Id, entity.RelationalEntity1Id); Assert.AreEqual(entity2Id, entity.RelationalEntity2Id); }
public void SerializeEntity_new_entity_empty_relational_collection_changes() { MockEntity entity = new MockEntity(); PropertyChangeTracker tracker = new PropertyChangeTracker(entity); tracker.Start(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity(); entity.AssociativeEntities.Add(associativeEntity); string json = DbEntityJsonConvert.SerializeEntity(entity, tracker.DbEntityChanges()); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"Guid\":\"" + entity.Guid + "\",\"AssociativeEntities\":[{\"$id\":\"" + associativeEntity.Guid + "\",\"Guid\":\"" + associativeEntity.Guid + "\"}]}", json); }
public void SerializeEntity_linker_entity_serialise_keys_only_once() { MockEntity entity = new MockEntity() { id = 1 }; PropertyChangeTracker tracker = new PropertyChangeTracker(entity); tracker.Start(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity(); entity.AssociativeEntities.Add(associativeEntity); associativeEntity.RelationalEntity1Id = entity.id; associativeEntity.RelationalEntity2Id = 2; string json = DbEntityJsonConvert.SerializeEntity(entity, tracker.DbEntityChanges()); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"id\":" + entity.id + ",\"AssociativeEntities\":[{\"$id\":\"" + associativeEntity.Guid + "\",\"RelationalEntity1Id\":" + associativeEntity.RelationalEntity1Id + ",\"RelationalEntity2Id\":" + associativeEntity.RelationalEntity2Id + "}]}", json); }
public void SerializeEntity_persisted_entity_multi_hop_relational_collection_property_changes() { MockEntity entity = new MockEntity(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity(); MockEntity relationalEntity1 = new MockEntity(); associativeEntity.RelationalEntity2 = relationalEntity1; relationalEntity1.RelationalEntity1 = new MockEntity(); MockEntity relationalEntity2 = new MockEntity(); relationalEntity1.RelationalEntity1.RelationalEntities.Add(relationalEntity2); entity.AssociativeEntities.Add(associativeEntity); PropertyChangeTracker tracker = new PropertyChangeTracker(entity); tracker.Start(); relationalEntity2.IntProperty = 1; string json = DbEntityJsonConvert.SerializeEntity(entity, tracker.DbEntityChanges()); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"Guid\":\"" + entity.Guid + "\",\"AssociativeEntities\":[{\"$id\":\"" + associativeEntity.Guid + "\",\"Guid\":\"" + associativeEntity.Guid + "\",\"RelationalEntity2\":{\"$id\":\"" + relationalEntity1.Guid + "\",\"Guid\":\"" + relationalEntity1.Guid + "\",\"RelationalEntity1\":{\"$id\":\"" + relationalEntity1.RelationalEntity1.Guid + "\",\"Guid\":\"" + relationalEntity1.RelationalEntity1.Guid + "\",\"RelationalEntities\":[{\"$id\":\"" + relationalEntity2.Guid + "\",\"Guid\":\"" + relationalEntity2.Guid + "\",\"IntProperty\":" + relationalEntity2.IntProperty + "}]}}}]}", json); }
public void DbEntityPropertyPath_entity_path_no_property_path_3() { MockEntity entity1 = new MockEntity() { id = 1 }; entity1.MarkPersisted(); MockEntity entity2 = new MockEntity() { id = 2 }; entity2.MarkPersisted(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity() { RelationalEntity1Id = entity1.id, RelationalEntity2Id = entity2.id, RelationalEntity2 = entity2 }; associativeEntity.MarkPersisted(); entity1.AssociativeEntities.Add(associativeEntity); MockEntity entity3 = new MockEntity(); entity2.RelationalEntity1 = entity3; MockEntity entity4 = new MockEntity() { id = 3, StringProperty = "3" }; entity3.RelationalEntities.Add(entity4); string entityPath = ".AssociativeEntities[Guid=" + associativeEntity.Guid + "].RelationalEntity2.RelationalEntity1.RelationalEntities[Guid=" + entity4.Guid + "]"; string expectedEntityPath = ".AssociativeEntities[RelationalEntity1Id=" + entity1.id + ",RelationalEntity2Id=" + entity2.id + "].RelationalEntity2.RelationalEntity1.RelationalEntities[id=" + entity4.id + "]"; PropertyChange change = new PropertyChange(entityPath, string.Empty, string.Empty, null, null); Assert.AreEqual(expectedEntityPath, change.DbEntityPropertyPath(entity1)); }
public void SerializeEntity_existing_entity_relational_property_changes() { MockEntity entity = new MockEntity(); MockEntity relationalEntity = new MockEntity(); MockAssociativeEntity associativeEntity = new MockAssociativeEntity() { RelationalEntity2 = relationalEntity }; entity.AssociativeEntities.Add(associativeEntity); PropertyChangeTracker tracker = new PropertyChangeTracker(entity); tracker.Start(); associativeEntity.RelationalEntity2.StringProperty = "Changed"; string json = DbEntityJsonConvert.SerializeEntity(entity, tracker.DbEntityChanges()); MockEntity deserialised = TypeExtensions.DeserializeObject <MockEntity>(json); Assert.AreEqual("{\"$id\":\"" + entity.Guid + "\",\"Guid\":\"" + entity.Guid + "\",\"AssociativeEntities\":[{\"$id\":\"" + associativeEntity.Guid + "\",\"Guid\":\"" + associativeEntity.Guid + "\",\"RelationalEntity2\":{\"$id\":\"" + relationalEntity.Guid + "\",\"Guid\":\"" + relationalEntity.Guid + "\",\"StringProperty\":\"" + relationalEntity.StringProperty + "\"}}]}", json); Assert.AreEqual(entity.Guid, deserialised.Guid); Assert.AreEqual(associativeEntity.Guid, deserialised.AssociativeEntities.First().Guid); Assert.AreEqual(associativeEntity.RelationalEntity2.StringProperty, deserialised.AssociativeEntities.First().RelationalEntity2.StringProperty); }