public void LoggableEntity_SetsName() { String actual = new LoggableEntity(entry).Name; String expected = nameof(Role); Assert.Equal(expected, actual); }
public void LoggableEntity_SetsEntityId() { String actual = new LoggableEntity(entry).Id; String expected = model.Id; Assert.Equal(expected, actual); }
public void ToString_Modified_Changes() { model.Title += "Test"; entry.State = EntityState.Modified; String actual = new LoggableEntity(entry).ToString(); String expected = $"Title: \"{model.Title[..^4]}\" => \"{model.Title}\"\n";
public void LoggableEntity_SetsId() { Int64 expected = model.Id; Int64 actual = new LoggableEntity(entry).Id(); Assert.Equal(expected, actual); }
public void LoggableEntity_SetsEntityTypeName() { String actual = new LoggableEntity(entry).Name; String expected = typeof(TestModel).Name; Assert.Equal(expected, actual); }
public void LoggableEntity_CreatesPropertiesForAttachedEntity() { context.Dispose(); String roleName = model.Name; context = new TestingContext(); context.Set <Role>().Attach(model); entry = context.Entry <BaseModel>(model); entry.OriginalValues["Name"] = "Role"; entry.CurrentValues["Name"] = "Role"; entry.State = EntityState.Modified; IEnumerator <LoggableProperty> expected = new List <LoggableProperty>() { new LoggableProperty(entry.Property("Name"), roleName) }.GetEnumerator(); IEnumerator <LoggableProperty> actual = new LoggableEntity(entry).Properties.GetEnumerator(); while (expected.MoveNext() | actual.MoveNext()) { Assert.AreEqual(expected.Current.IsModified, actual.Current.IsModified); Assert.AreEqual(expected.Current.ToString(), actual.Current.ToString()); } }
public void LoggableEntity_SetsEntityTypeNameFromProxy() { String actual = new LoggableEntity(entry).Name; String expected = typeof(Role).Name; Assert.Equal("System.Data.Entity.DynamicProxies", entry.Entity.GetType().Namespace); Assert.Equal(expected, actual); }
public void LoggableEntity_SetsAction() { entry.State = EntityState.Deleted; String expected = nameof(EntityState.Deleted); String actual = new LoggableEntity(entry).Action; Assert.Equal(expected, actual); }
public void LoggableEntity_SetsAction() { entry.State = EntityState.Deleted; String actual = new LoggableEntity(entry).Action; String expected = entry.State.ToString(); Assert.AreEqual(expected, actual); }
public void ToString_Added_Changes() { entry.State = EntityState.Added; String actual = new LoggableEntity(entry).ToString(); String expected = $"CreationDate: \"{model.CreationDate}\"\nTitle: \"{model.Title}\"\n"; Assert.Equal(expected, actual); }
public void LoggableEntity_SetsEntityTypeName() { entry = context.Entry <BaseModel>(context.Set <Role>().Add(new Role())); String actual = new LoggableEntity(entry).Name; String expected = typeof(Role).Name; Assert.NotEqual("System.Data.Entity.DynamicProxies", entry.Entity.GetType().Namespace); Assert.Equal(expected, actual); }
public void LoggableEntity_SetsEntityTypeNameFromProxy() { DbEntityEntry <BaseModel> proxy = context.Entry <BaseModel>(context.Set <Role>().Single()); String actual = new LoggableEntity(proxy).Name; String expected = typeof(Role).Name; Assert.Equal("System.Data.Entity.DynamicProxies", proxy.Entity.GetType().Namespace); Assert.Equal(expected, actual); }
public void LoggableEntity_Proxy_SetsName() { model = context.Set<Role>().Single(); entry = context.ChangeTracker.Entries<AModel>().Single(); String actual = new LoggableEntity(entry).Name; String expected = nameof(Role); Assert.IsAssignableFrom<IProxyTargetAccessor>(model); Assert.Equal(expected, actual); }
public void Log_DoesNotSave() { entry.State = EntityState.Added; LoggableEntity entity = new LoggableEntity(entry); HttpContext.Current = HttpContextFactory.CreateHttpContext(); logger.Log(entity); Assert.Empty(context.Set <AuditLog>()); }
private void AsssertProperties(DbPropertyValues newValues) { LoggableProperty[] actual = new LoggableEntity(entry).Properties.ToArray(); LoggableProperty[] expected = newValues.PropertyNames.Where(property => property != "Id") .Select(name => new LoggableProperty(entry.Property(name), newValues[name])).ToArray(); for (Int32 i = 0; i < expected.Length || i < actual.Length; i++) { Assert.Equal(expected[i].IsModified, actual[i].IsModified); Assert.Equal(expected[i].ToString(), actual[i].ToString()); } }
public void Log_DoesNotSaveLog() { entry.State = EntityState.Added; DbContext context = Substitute.For <DbContext>(); LoggableEntity entity = new LoggableEntity(entry); logger = Substitute.ForPartsOf <AuditLogger>(context); logger.When(sub => sub.Log(Arg.Any <LoggableEntity>())).DoNotCallBase(); logger.Log(entity); logger.DidNotReceive().Save(); context.DidNotReceive().SaveChanges(); }
public void LoggableEntity_CreatesPropertiesForModifiedEntity() { String title = model.Title; entry.State = EntityState.Modified; entry.CurrentValues["Title"] = "Role"; entry.OriginalValues["Title"] = "Role"; LoggableProperty expected = new LoggableProperty(entry.Property("Title"), title); LoggableProperty actual = new LoggableEntity(entry).Properties.Single(); Assert.Equal(expected.IsModified, actual.IsModified); Assert.Equal(expected.ToString(), actual.ToString()); }
private void AsssertProperties(DbPropertyValues originalValues) { IEnumerable <String> properties = originalValues.PropertyNames; IEnumerator <LoggableProperty> actual = new LoggableEntity(entry).Properties.GetEnumerator(); IEnumerator <LoggableProperty> expected = properties.Where(property => property != "Id") .Select(name => new LoggableProperty(entry.Property(name), originalValues[name])).GetEnumerator(); while (expected.MoveNext() | actual.MoveNext()) { Assert.Equal(expected.Current.IsModified, actual.Current.IsModified); Assert.Equal(expected.Current.ToString(), actual.Current.ToString()); } }
public void ToString_FormsEntityChanges() { StringBuilder changes = new StringBuilder(); LoggableEntity loggableEntity = new LoggableEntity(entry); foreach (LoggableProperty property in loggableEntity.Properties) { changes.AppendFormat("{0}{1}", property, Environment.NewLine); } String actual = loggableEntity.ToString(); String expected = changes.ToString(); Assert.Equal(expected, actual); }
public void Log_AddsLogToTheSet() { LoggableEntity entity = new LoggableEntity(entry); logger.Log(entity); AuditLog actual = context.ChangeTracker.Entries <AuditLog>().First().Entity; LoggableEntity expected = entity; Assert.AreEqual(HttpContext.Current.User.Identity.Name, actual.AccountId); Assert.AreEqual(expected.ToString(), actual.Changes); Assert.AreEqual(expected.Name, actual.EntityName); Assert.AreEqual(expected.Action, actual.Action); Assert.AreEqual(expected.Id, actual.EntityId); }
public void Log_Added() { entry.State = EntityState.Added; logger.Log(new[] { entry }); logger.Save(); LoggableEntity expected = new LoggableEntity(entry); AuditLog actual = context.Set <AuditLog>().Single(); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); Assert.Equal(1, actual.AccountId); }
public void Log_Entity() { LoggableEntity entity = new LoggableEntity(entry); logger.Log(entity); logger.Save(); AuditLog actual = context.Set <AuditLog>().Single(); LoggableEntity expected = entity; Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); Assert.Equal(1, actual.AccountId); }
public void Commit_DeletedAudit() { unitOfWork.Delete(model); LoggableEntity expected = new LoggableEntity(context.ChangeTracker.Entries <AModel>().Single()); unitOfWork.Commit(); AuditLog actual = Assert.Single(unitOfWork.Select <AuditLog>()); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); Assert.Equal(1, actual.AccountId); }
public void Log_Modified() { Assert.IsType <TestModel>(entry.Entity).Title += "Test"; entry.State = EntityState.Modified; logger.Log(new[] { entry }); logger.Save(); LoggableEntity expected = new LoggableEntity(entry); AuditLog actual = context.Set <AuditLog>().Single(); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); Assert.Equal(1, actual.AccountId); }
public void LoggableEntity_CreatesPropertiesForAttachedEntity() { context.Dispose(); String title = model.Title; context = new TestingContext(); context.Set <TestModel>().Attach(model); entry = context.Entry <BaseModel>(model); entry.OriginalValues["Title"] = "Role"; entry.CurrentValues["Title"] = "Role"; entry.State = EntityState.Modified; LoggableProperty expected = new LoggableProperty(entry.Property("Title"), title); LoggableProperty actual = new LoggableEntity(entry).Properties.Single(); Assert.Equal(expected.IsModified, actual.IsModified); Assert.Equal(expected.ToString(), actual.ToString()); }
public void Log_AddsLogToTheSet(String accountId, String identityName, String expectedAccountId) { HttpContext.Current = HttpContextFactory.CreateHttpContext(); HttpContext.Current.User.Identity.Name.Returns(identityName); LoggableEntity entity = new LoggableEntity(entry); logger = new AuditLogger(context, accountId); logger.Log(entity); AuditLog actual = context.ChangeTracker.Entries <AuditLog>().First().Entity; LoggableEntity expected = entity; Assert.Equal(expectedAccountId, actual.AccountId); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id, actual.EntityId); }
private void Logs(DbEntityEntry <BaseModel> entry) { LoggableEntity expected = new LoggableEntity(entry); logger.When(sub => sub.Log(Arg.Any <LoggableEntity>())).DoNotCallBase(); logger.When(sub => sub.Log(Arg.Any <LoggableEntity>())).Do(info => { LoggableEntity actual = info.Arg <LoggableEntity>(); Assert.Equal(expected.ToString(), actual.ToString()); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Name, actual.Name); Assert.Equal(expected.Id, actual.Id); }); logger.Log(new[] { entry }); logger.ReceivedWithAnyArgs().Log(expected); }
public void LoggableEntity_CreatesPropertiesForModifiedEntity() { String title = model.Title; entry.State = EntityState.Modified; entry.CurrentValues["Title"] = "Role"; entry.OriginalValues["Title"] = "Role"; IEnumerator <LoggableProperty> expected = new List <LoggableProperty> { new LoggableProperty(entry.Property("Title"), title) }.GetEnumerator(); IEnumerator <LoggableProperty> actual = new LoggableEntity(entry).Properties.GetEnumerator(); while (expected.MoveNext() | actual.MoveNext()) { Assert.Equal(expected.Current.IsModified, actual.Current.IsModified); Assert.Equal(expected.Current.ToString(), actual.Current.ToString()); } }
public void Commit_AddedAudit() { context.Dispose(); unitOfWork.Dispose(); context = TestingContext.Create(); unitOfWork = new AuditedUnitOfWork(context, 1); unitOfWork.Insert(ObjectsFactory.CreateRole(1)); LoggableEntity expected = new LoggableEntity(context.ChangeTracker.Entries <AModel>().Single()); unitOfWork.Commit(); AuditLog actual = Assert.Single(unitOfWork.Select <AuditLog>()); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); Assert.Equal(1, actual.AccountId); }
public void Save_LogsOnce(Int32?accountId, String identity, Int32?expectedAccountId) { HttpContext.Current = HttpContextFactory.CreateHttpContext(); HttpContext.Current.User.Identity.Name.Returns(identity); LoggableEntity entity = new LoggableEntity(entry); logger = new AuditLogger(context, accountId); logger.Log(entity); logger.Save(); logger.Save(); AuditLog actual = context.Set <AuditLog>().Single(); LoggableEntity expected = entity; Assert.Equal(expectedAccountId, actual.AccountId); Assert.Equal(expected.ToString(), actual.Changes); Assert.Equal(expected.Name, actual.EntityName); Assert.Equal(expected.Action, actual.Action); Assert.Equal(expected.Id(), actual.EntityId); }