private void FixupOrgUnit(OrgUnit previousValue) { if (previousValue != null && previousValue.OrgUnitSchedules.Contains(this)) { previousValue.OrgUnitSchedules.Remove(this); } if (OrgUnit != null) { if (!OrgUnit.OrgUnitSchedules.Contains(this)) { OrgUnit.OrgUnitSchedules.Add(this); } if (OrgUnitId != OrgUnit.Id) { OrgUnitId = OrgUnit.Id; } } }
public void tracks_properties_with_foreign_key() { //setup decimal openHours = 10; decimal openTime = 20; var orgUnitSchedule = new OrgUnitSchedule(); orgUnitSchedule.OpenHours = openHours; orgUnitSchedule.OpenTime = openTime; var orgUnitName = Guid.NewGuid().ToString(); var orgUnit = new OrgUnit(); orgUnit.Name = orgUnitName; orgUnitSchedule.OrgUnit = orgUnit; var context = CreateObjectContext(); context.OrgUnitSchedules.AddObject(orgUnitSchedule); var objectStateEntry = context.ObjectStateManager.GetObjectStateEntry(orgUnitSchedule); context.SaveChanges(); //act var subject = new EntityAddedAudit(objectStateEntry); subject.TrackPropertiesAfterAdd(); //assert Assert.AreNotEqual(noId, subject.EntityIdentifier); var openHoursPropertyAudit = subject.AuditEntityProperties.Where(p => p.PropertyName == "OpenHours").SingleOrDefault(); Assert.IsNotNull(openHoursPropertyAudit); Assert.IsNull(openHoursPropertyAudit.OriginalValue); Assert.AreEqual(openHours.ToString(), openHoursPropertyAudit.NewValue); var openTimePropertyAudit = subject.AuditEntityProperties.Where(p => p.PropertyName == "OpenTime").SingleOrDefault(); Assert.IsNotNull(openTimePropertyAudit); Assert.IsNull(openTimePropertyAudit.OriginalValue); Assert.AreEqual(openTime.ToString(), openTimePropertyAudit.NewValue); var versionPropertyAudit = subject.AuditEntityProperties.Where(p => p.PropertyName == "Version").SingleOrDefault(); Assert.IsNull(versionPropertyAudit); var locationIdPropertyAudit = subject.AuditEntityProperties.Where(p => p.PropertyName == "OrgUnitId").SingleOrDefault(); Assert.IsNotNull(locationIdPropertyAudit); Assert.IsNull(locationIdPropertyAudit.OriginalValue); Assert.AreNotEqual(noId, locationIdPropertyAudit.NewValue); }