Example #1
0
        public async Task AddChange_And_SaveChanges_PublishesEvents()
        {
            TestChangeData changeData = new TestChangeData();

            trackedChangeRecordConverter.ToRecord(null).ReturnsForAnyArgs(ci =>
            {
                TrackedChange x = ci.ArgAt <TrackedChange>(0);
                return(new TrackedChangeRecord()
                {
                    Id = x.Id,
                    AggregateId = x.AggregateId,
                    AggregateClassId = x.AggregateClassId,
                    EntityId = x.EntityId,
                    EntityClassId = x.EntityClassId
                });
            });

            TrackedChange tc = sut.AddChange(changeData, aggregateId, aggregateClassId,
                                             entityId, entityClassId);
            await sut.SaveChangesAsync();

            eventBus.Received(1).PublishAsync(Arg.Is <IEventMessage <TrackedChangeAdded> >(
                                                  x => x.Event.AggregateId == aggregateId &&
                                                  x.Event.EntityClassId == entityClassId &&
                                                  x.Event.EntityId == entityId &&
                                                  x.Event.TrackedChangeId == tc.Id));
        }
Example #2
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));
        }
Example #3
0
        public void AddChange_ReturnsChange()
        {
            TestChangeData changeData = new TestChangeData();

            TrackedChange change = sut.AddChange(changeData, aggregateId, aggregateClassId,
                                                 entityId, entityClassId);

            trackedChangeRecordConverter.ToRecord(null).ReturnsForAnyArgs(
                new TrackedChangeRecord());

            Assert.Equal(aggregateId, change.AggregateId);
            Assert.Equal(aggregateClassId, change.AggregateClassId);
            Assert.Equal(entityId, change.EntityId);
            Assert.Equal(entityClassId, change.EntityClassId);
            Assert.Equal(changeData, change.ChangeData);
            Assert.Equal(actorContext.CurrentActorName, change.ActorName);
            Assert.Equal(FakeClock.Now, change.ChangeTime);
        }