Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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
                       ));
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        public async Task <TrackedChange> GetChangeAsync(Guid trackedChangeId)
        {
            TrackedChangeRecord record = await crudRepository.GetAsync <TrackedChangeRecord>(trackedChangeId);

            return(Mapper.Map <TrackedChange>(record));
        }