Пример #1
0
        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);
        }
Пример #5
0
        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);
        }