public void GetChangeType_WhenModelIsNotTracked_ThrowsArgumentException() { ChangeDetectionService cds = MakeService(); Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(new ModelToAudit()); Assert.Throws <ArgumentException>(() => cds.GetChangeType(entity)); }
public void SerializeEntityChanges_WhenChangeTypeInvalid_ThrowsArgumentOutOfRangeException() { ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(false); Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); Assert.Throws <ArgumentOutOfRangeException>(() => cds.SerializeEntityChanges((AuditedOperationTypeEnum)5, entity)); }
public void GetChangeType_WhenModelMemberIsUpdated_ReturnsUpdate() { ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(); model.Name = Guid.NewGuid().ToString(); Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); AuditedOperationTypeEnum changeType = cds.GetChangeType(entity); Assert.AreEqual(AuditedOperationTypeEnum.Update, changeType); }
public void SerializeEntityChanges_WhenEntityIsDeleted_SerializesEntityToBefore() { ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(); Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); (string before, string after) = cds.SerializeEntityChanges(AuditedOperationTypeEnum.Delete, entity); Assert.IsNotNull(before); Assert.IsNull(after); }
public void GetChangeType_WhenModelIsAttachedWithId_ReturnsUpdate() { ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(false); Context.Attach(model); Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); AuditedOperationTypeEnum changeType = cds.GetChangeType(entity); Assert.AreEqual(AuditedOperationTypeEnum.Update, changeType); }
public void SerializeEntityChanges_WhenModelIsSelfReferencing_IgnoresSelfReferencing() { ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(); model.OneToOneChildModel = new OneToOneChildModel { Parent = model }; Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); (string _, string afterJson) = cds.SerializeEntityChanges(AuditedOperationTypeEnum.Insert, entity); Dictionary <string, object> after = JsonConvert.DeserializeObject <Dictionary <string, object> >(afterJson); var oneToOne = after[nameof(model.OneToOneChildModel)] as JObject; Assert.IsNotNull(oneToOne); Assert.IsNull(oneToOne[nameof(OneToOneChildModel.Parent)]); }
public void SerializeEntityChanges_WhenEntityIsUpdated_SerializesOnlyChangedMembers() { var newName = "New Name"; string originalName; ChangeDetectionService cds = MakeService(); ModelToAudit model = GenerateModel(); originalName = model.Name; model.Name = newName; Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <ModelToAudit> entity = Context.Entry(model); (string beforeJson, string afterJson) = cds.SerializeEntityChanges(AuditedOperationTypeEnum.Update, entity); Dictionary <string, object> before = JsonConvert.DeserializeObject <Dictionary <string, object> >(beforeJson); Dictionary <string, object> after = JsonConvert.DeserializeObject <Dictionary <string, object> >(afterJson); Assert.IsTrue(before.Count == 1); Assert.AreEqual(nameof(model.Name), before.First().Key); Assert.AreEqual(originalName, before.First().Value); Assert.IsTrue(after.Count == 1); Assert.AreEqual(nameof(model.Name), after.First().Key); Assert.AreEqual(newName, after.First().Value); }