public void TestInsert() { var ev = (AuditEvent)null; CustomerOrder order = null; using (var audit = new AuditScopeFactory().Create("Order:Create", () => new TestStruct() { Id = 123, Order = order })) { ev = audit.Event; order = DbCreateOrder(); audit.SetCustomField("ReferenceId", order.OrderId); } Assert.AreEqual(order.OrderId, ev.CustomFields["ReferenceId"]); }
public void Test_DynamicDataProvider() { int onInsertCount = 0, onReplaceCount = 0, onInsertOrReplaceCount = 0; Core.Configuration.Setup() .UseDynamicProvider(config => config .OnInsert(ev => onInsertCount++) .OnReplace((obj, ev) => onReplaceCount++) .OnInsertAndReplace(ev => onInsertOrReplaceCount++)); var scope = new AuditScopeFactory().Create("et1", null, EventCreationPolicy.Manual, null); scope.Save(); scope.SetCustomField("field", "value"); Assert.AreEqual(1, onInsertCount); Assert.AreEqual(0, onReplaceCount); Assert.AreEqual(1, onInsertOrReplaceCount); scope.Save(); Assert.AreEqual(1, onInsertCount); Assert.AreEqual(1, onReplaceCount); Assert.AreEqual(2, onInsertOrReplaceCount); }
public void TestDiscard() { var provider = new Mock <AuditDataProvider>(); provider.Setup(p => p.Serialize(It.IsAny <string>())).CallBase(); Core.Configuration.DataProvider = provider.Object; var target = "initial"; var eventType = "SomeEvent"; AuditEvent ev; using (var scope = new AuditScopeFactory().Create(eventType, () => target, EventCreationPolicy.InsertOnEnd, null)) { ev = scope.Event; scope.Comment("test"); scope.SetCustomField <string>("custom", "value"); target = "final"; scope.Discard(); } Assert.AreEqual(eventType, ev.EventType); Assert.True(ev.Comments.Contains("test")); Assert.Null(ev.Target.New); provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Never); }
public void TestSave() { var provider = new Mock <AuditDataProvider>(); provider.Setup(p => p.Serialize(It.IsAny <string>())).CallBase(); Core.Configuration.DataProvider = provider.Object; var target = "initial"; var eventType = "SomeEvent"; AuditEvent ev; using (var scope = new AuditScopeFactory().Create(eventType, () => target, EventCreationPolicy.InsertOnEnd, null)) { ev = scope.Event; scope.Comment("test"); scope.SetCustomField <string>("custom", "value"); target = "final"; scope.Save(); // this should do nothing because of the creation policy (this no more true since v4.6.2) provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Once); } Assert.AreEqual(eventType, ev.EventType); Assert.True(ev.Comments.Contains("test")); provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Exactly(2)); }
public void Test_AuditScope_CustomSystemClock() { Audit.Core.Configuration.SystemClock = new MyClock(); var evs = new List <AuditEvent>(); Audit.Core.Configuration.Setup() .Use(x => x .OnInsertAndReplace(ev => { evs.Add(ev); })) .WithCreationPolicy(EventCreationPolicy.InsertOnEnd); using (var scope = new AuditScopeFactory().Create("Test_AuditScope_CustomSystemClock", () => new { someProp = true })) { scope.SetCustomField("test", 123); } Audit.Core.Configuration.SystemClock = new DefaultSystemClock(); Assert.AreEqual(1, evs.Count); Assert.AreEqual(10000, evs[0].Duration); Assert.AreEqual(new DateTime(2020, 1, 1, 0, 0, 0), evs[0].StartDate); Assert.AreEqual(new DateTime(2020, 1, 1, 0, 0, 10), evs[0].EndDate); }