public void EntitySoftDeleted() { var identitySeed = TestContext.GetIdentitySeed(x => x.Entity_Basics); TestContext.DeleteAll(x => x.AuditEntryProperties); TestContext.DeleteAll(x => x.AuditEntries); TestContext.DeleteAll(x => x.Entity_Basics); TestContext.Insert(x => x.Entity_Basics, 3); var audit = AuditHelper.AutoSaveWithAuditEntryPropertyFactory(); audit.Configuration.SoftDeleted(x => true); using (var ctx = new TestContext()) { ctx.Entity_Basics.ToList().ForEach(x => x.ColumnInt++); ctx.SaveChanges(audit); } // UnitTest - Audit { var entries = audit.Entries; // Entries { // Entries Count Assert.AreEqual(3, entries.Count); // Entries State Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[0].State); Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[1].State); Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[2].State); // Entries EntitySetName Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[0].EntitySetName); Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[1].EntitySetName); Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[2].EntitySetName); // Entries TypeName Assert.AreEqual(typeof(Entity_Basic).Name, entries[0].EntityTypeName); Assert.AreEqual(typeof(Entity_Basic).Name, entries[1].EntityTypeName); Assert.AreEqual(typeof(Entity_Basic).Name, entries[2].EntityTypeName); } // Properties { var propertyIndex = -1; // Properties Count Assert.AreEqual(2, entries[0].Properties.Count); Assert.AreEqual(2, entries[1].Properties.Count); Assert.AreEqual(2, entries[2].Properties.Count); // ID propertyIndex = 0; Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[2].Properties[propertyIndex].PropertyName); Assert.AreEqual(identitySeed + 1, entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(identitySeed + 2, entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(identitySeed + 3, entries[2].Properties[propertyIndex].OldValue); Assert.AreEqual(identitySeed + 1, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(identitySeed + 2, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual(identitySeed + 3, entries[2].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[2].Properties[propertyIndex]).ExtendedValue); propertyIndex = 1; Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[2].Properties[propertyIndex].PropertyName); Assert.AreEqual(0, entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(1, entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(2, entries[2].Properties[propertyIndex].OldValue); Assert.AreEqual(1, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(2, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual(3, entries[2].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[2].Properties[propertyIndex]).ExtendedValue); } } // UnitTest - Audit (Database) { using (var ctx = new TestContext()) { // ENSURE order var entries = ctx.AuditEntries.OrderBy(x => x.AuditEntryID).Include(x => x.Properties).ToList(); entries.ForEach(x => x.Properties = x.Properties.OrderBy(y => y.AuditEntryPropertyID).ToList()); // Entries { // Entries Count Assert.AreEqual(3, entries.Count); // Entries State Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[0].State); Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[1].State); Assert.AreEqual(AuditEntryState.EntitySoftDeleted, entries[2].State); // Entries EntitySetName Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[0].EntitySetName); Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[1].EntitySetName); Assert.AreEqual(TestContext.TypeName(x => x.Entity_Basics), entries[2].EntitySetName); // Entries TypeName Assert.AreEqual(typeof(Entity_Basic).Name, entries[0].EntityTypeName); Assert.AreEqual(typeof(Entity_Basic).Name, entries[1].EntityTypeName); Assert.AreEqual(typeof(Entity_Basic).Name, entries[2].EntityTypeName); } // Properties { var propertyIndex = -1; // Properties Count Assert.AreEqual(2, entries[0].Properties.Count); Assert.AreEqual(2, entries[1].Properties.Count); Assert.AreEqual(2, entries[2].Properties.Count); // ID propertyIndex = 0; Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[2].Properties[propertyIndex].PropertyName); Assert.AreEqual((identitySeed + 1).ToString(), entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual((identitySeed + 2).ToString(), entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual((identitySeed + 3).ToString(), entries[2].Properties[propertyIndex].OldValue); Assert.AreEqual((identitySeed + 1).ToString(), entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual((identitySeed + 2).ToString(), entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual((identitySeed + 3).ToString(), entries[2].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[2].Properties[propertyIndex]).ExtendedValue); // ColumnInt propertyIndex = 1; Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[2].Properties[propertyIndex].PropertyName); Assert.AreEqual("0", entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual("1", entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual("2", entries[2].Properties[propertyIndex].OldValue); Assert.AreEqual("1", entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual("2", entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual("3", entries[2].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[2].Properties[propertyIndex]).ExtendedValue); } } } }
public void RelationshipDeleted() { int leftID; int rightID_0; int rightID_1; TestContext.DeleteAll(x => x.AuditEntryProperties); TestContext.DeleteAll(x => x.AuditEntries); TestContext.DeleteAll(x => x.Association_OneToMany_Lefts); TestContext.DeleteAll(x => x.Association_OneToMany_Rights); var audit = AuditHelper.AutoSaveWithAuditEntryPropertyFactory(); using (var ctx = new TestContext()) { var left = TestContext.Insert(ctx, x => x.Association_OneToMany_Lefts, 1).First(); var right0 = new Association_OneToMany_Right { ColumnInt = 0 }; var right1 = new Association_OneToMany_Right { ColumnInt = 1 }; left.Rights = new List <Association_OneToMany_Right> { right0, right1 }; ctx.SaveChanges(); leftID = left.ID; rightID_0 = right0.ID; rightID_1 = right1.ID; } using (var ctx = new TestContext()) { TestContext.DeleteAll(ctx, x => x.Association_OneToMany_Rights); ctx.SaveChanges(audit); } // UnitTest - Audit { var entries = audit.Entries; // Entries { // Entries Count Assert.AreEqual(4, entries.Count); // Entries State Assert.AreEqual(AuditEntryState.RelationshipDeleted, entries[0].State); Assert.AreEqual(AuditEntryState.RelationshipDeleted, entries[1].State); // Entries EntitySetName Assert.AreEqual("Association_OneToMany_Left_Rights", entries[0].EntitySetName); Assert.AreEqual("Association_OneToMany_Left_Rights", entries[1].EntitySetName); // Entries TypeName Assert.AreEqual(null, entries[0].EntityTypeName); Assert.AreEqual(null, entries[1].EntityTypeName); } // Properties { var propertyIndex = -1; // Properties Count Assert.AreEqual(2, entries[0].Properties.Count); Assert.AreEqual(2, entries[1].Properties.Count); // Association_OneToMany_Left_Rights_Source;ID propertyIndex = 0; Assert.AreEqual("CustomRelationName", entries[0].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomRelationName", entries[1].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual(leftID, entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(leftID, entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(null, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(null, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); propertyIndex = 1; Assert.AreEqual("CustomRelationName", entries[0].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomRelationName", entries[1].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual(rightID_0, entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(rightID_1, entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(null, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(null, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); } } // UnitTest - Audit (Database) { using (var ctx = new TestContext()) { // ENSURE order var entries = ctx.AuditEntries.OrderBy(x => x.AuditEntryID).Include(x => x.Properties).ToList(); entries.ForEach(x => x.Properties = x.Properties.OrderBy(y => y.AuditEntryPropertyID).ToList()); // Entries { // Entries Count Assert.AreEqual(4, entries.Count); // Entries State Assert.AreEqual(AuditEntryState.RelationshipDeleted, entries[0].State); Assert.AreEqual(AuditEntryState.RelationshipDeleted, entries[1].State); // Entries EntitySetName Assert.AreEqual("Association_OneToMany_Left_Rights", entries[0].EntitySetName); Assert.AreEqual("Association_OneToMany_Left_Rights", entries[1].EntitySetName); // Entries TypeName Assert.AreEqual(null, entries[0].EntityTypeName); Assert.AreEqual(null, entries[1].EntityTypeName); } // Properties { var propertyIndex = -1; // Properties Count Assert.AreEqual(2, entries[0].Properties.Count); Assert.AreEqual(2, entries[1].Properties.Count); // Association_OneToMany_Left_Rights_Source;ID propertyIndex = 0; Assert.AreEqual("CustomRelationName", entries[0].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomRelationName", entries[1].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual(leftID.ToString(), entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(leftID.ToString(), entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(null, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(null, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); propertyIndex = 1; Assert.AreEqual("CustomRelationName", entries[0].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomRelationName", entries[1].Properties[propertyIndex].RelationName); Assert.AreEqual("CustomPropertyName", entries[0].Properties[propertyIndex].PropertyName); Assert.AreEqual("CustomPropertyName", entries[1].Properties[propertyIndex].PropertyName); Assert.AreEqual(rightID_0.ToString(), entries[0].Properties[propertyIndex].OldValue); Assert.AreEqual(rightID_1.ToString(), entries[1].Properties[propertyIndex].OldValue); Assert.AreEqual(null, entries[0].Properties[propertyIndex].NewValue); Assert.AreEqual(null, entries[1].Properties[propertyIndex].NewValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[0].Properties[propertyIndex]).ExtendedValue); Assert.AreEqual("CustomExtendedValue", ((AuditEntryProperty_Extended)entries[1].Properties[propertyIndex]).ExtendedValue); } } } }