public void FromRecord_Result() { TrackedChangeRecord record = new TrackedChangeRecord() { Id = Guid.NewGuid(), ActorName = "actor", AggregateId = Guid.NewGuid(), AggregateClassId = Guid.NewGuid(), EntityId = Guid.NewGuid(), EntityClassId = Guid.NewGuid(), ChangeDataClassName = "TestChangeData", ChangeDataJson = "{\"Foo\":\"bar\"}", ChangeTime = DateTime.Now }; TrackedChange change = sut.FromRecord(record); Assert.Equal(record.Id, change.Id); Assert.Equal(record.ActorName, change.ActorName); Assert.Equal(record.AggregateId, change.AggregateId); Assert.Equal(record.AggregateClassId, change.AggregateClassId); Assert.Equal(record.EntityId, change.EntityId); Assert.Equal(record.EntityClassId, change.EntityClassId); Assert.Equal(typeof(TestChangeData), change.ChangeData.GetType()); Assert.Equal("bar", ((TestChangeData)change.ChangeData).Foo); Assert.Equal(record.ChangeTime, change.ChangeTime); }
public void FindChanges_ReturnsChanges() { TrackedChangeRecord record = new TrackedChangeRecord(); TrackedChange change = new TrackedChange(Guid.NewGuid(), new TestChangeData(), "", null, null, null, null, null, DateTimeOffset.Now); trackedChangeRecordConverter.FromRecord(record).Returns(change); crudRepository.Attach(record); List <TrackedChange> changes = sut.FindChanges().ToList(); Assert.Equal(1, changes.Count); Assert.Contains(change, changes); }
public async Task AddChange_And_SaveChanges_AddsRecordToRepository() { TestChangeData changeData = new TestChangeData(); TrackedChangeRecord record = new TrackedChangeRecord(); trackedChangeRecordConverter.ToRecord(null).ReturnsForAnyArgs(record); sut.AddChange(changeData, aggregateId, aggregateClassId, entityId, entityClassId); await sut.SaveChangesAsync(); Assert.Equal(1, crudRepository.FindAll <TrackedChangeRecord>().Count(x => x == record)); }
public async Task GetChangeAsync_ReturnsChange() { TrackedChangeRecord record = new TrackedChangeRecord() { Id = Guid.NewGuid() }; TrackedChange change = new TrackedChange(record.Id, new TestChangeData(), "", null, null, null, null, null, DateTimeOffset.Now); trackedChangeRecordConverter.FromRecord(record).Returns(change); crudRepository.Attach(record); TrackedChange change2 = await sut.GetChangeAsync(change.Id); Assert.Equal(change, change2); }
public TrackedChange AddChange <T>(T changeData, Guid?aggregateId = null, Guid?aggregateClassId = null, Guid?entityId = null, Guid?entityClassId = null, Guid?userId = null) where T : ChangeData { var actorName = actorContext.CurrentActorName; var now = Clock.Current.Now; TrackedChange change = new TrackedChange(Guid.NewGuid(), changeData, actorName: actorName, aggregateId: aggregateId, aggregateClassId: aggregateClassId, entityId: entityId, entityClassId: entityClassId, changeTime: now, userId: userId); TrackedChangeRecord record = trackedChangeRecordConverter.ToRecord(change); unsavedChangeRecords.Add(record); return(change); }
public TrackedChange FromRecord(TrackedChangeRecord record) { Type changeDataType = changeDataTypeCache.GetClrChangeDataType(record.ChangeDataClassName); ChangeData changeData = (ChangeData)JsonConvert.DeserializeObject(record.ChangeDataJson, changeDataType); return(new TrackedChange( record.Id, changeData, actorName: record.ActorName, userId: record.UserId, aggregateClassId: record.AggregateClassId, aggregateId: record.AggregateId, entityClassId: record.EntityClassId, entityId: record.EntityId, changeTime: record.ChangeTime )); }
public void ToRecord_Result() { TrackedChange change = new TrackedChange(Guid.NewGuid(), new TestChangeData() { Foo = "bar" }, "actor", Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), DateTimeOffset.Now); TrackedChangeRecord record = sut.ToRecord(change); Assert.Equal(change.Id, record.Id); Assert.Equal(change.ActorName, record.ActorName); Assert.Equal(change.UserId, record.UserId); Assert.Equal(change.AggregateId, record.AggregateId); Assert.Equal(change.AggregateClassId, record.AggregateClassId); Assert.Equal(change.EntityId, record.EntityId); Assert.Equal(change.EntityClassId, record.EntityClassId); Assert.Equal("TestChangeData", record.ChangeDataClassName); Assert.Equal("bar", JObject.Parse(record.ChangeDataJson)["Foo"]); Assert.Equal(change.ChangeTime, record.ChangeTime); }
public async Task <TrackedChange> GetChangeAsync(Guid trackedChangeId) { TrackedChangeRecord record = await crudRepository.GetAsync <TrackedChangeRecord>(trackedChangeId); return(Mapper.Map <TrackedChange>(record)); }