コード例 #1
0
        public void TestDepositGuidIsTaken()
        {
            var accountId          = Guid.NewGuid();
            var publishedEvents    = new List <IEvent>();
            var depositServiceMock = new Mock <IAggregateService <DepositAggregate> >();
            var counter            = 0;
            var depositGuid        = Guid.Empty;

            depositServiceMock.Setup(m => m.Load(It.IsAny <Guid>())).Returns((Guid guid) =>
            {
                var aggregate = new DepositAggregate();
                if (counter > 3)
                {
                    depositGuid = guid;
                    return(aggregate);
                }
                counter++;
                aggregate.Apply(new CreateDepositEvent {
                    ItemGuid = guid
                });
                return(aggregate);
            });
            var accountServiceMock = new Mock <IAggregateService <AccountAggregate> >();

            accountServiceMock.Setup(m => m.Load(It.IsAny <Guid>())).Returns(() => new MockAggregate(accountId));
            var eventPublisherMock = new Mock <IEventPublisher>();

            eventPublisherMock.Setup(m => m.Publish(It.IsAny <IEvent>())).Callback((IEvent e) => publishedEvents.Add(e));
            var commandHandler = new CreateDepositCommandHandler(depositServiceMock.Object, accountServiceMock.Object,
                                                                 eventPublisherMock.Object);
            var command = new CreateDepositCommand {
                AccountId = accountId
            };

            commandHandler.Handle(command);

            Assert.Equal(2, publishedEvents.Count);

            var first = publishedEvents[0];

            Assert.True(first is CreateDepositEvent);
            var createDepositEvent = (CreateDepositEvent)first;

            Assert.NotEqual(Guid.Empty, depositGuid);
            Assert.Equal(depositGuid, createDepositEvent.ItemGuid);
            Assert.Equal(Guid.Empty, publishedEvents[0].EventGuid);
            Assert.Equal(Guid.Empty, publishedEvents[1].EventGuid);
        }
コード例 #2
0
        public void TestCreateDeposit()
        {
            var aggregate          = new DepositAggregate();
            var accountGuid        = Guid.NewGuid();
            var depositGuid        = Guid.NewGuid();
            var eventGuid          = Guid.NewGuid();
            var createDepositEvent = new CreateDepositEvent
            {
                AccountGuid = accountGuid,
                ItemGuid    = depositGuid,
                EventGuid   = eventGuid
            };

            aggregate.Apply(createDepositEvent);

            Assert.Equal(depositGuid, aggregate.Guid);
            Assert.Equal(accountGuid, aggregate.AccountGuid);
        }
コード例 #3
0
        public void TestEmptyDeposit()
        {
            var aggregate = new DepositAggregate();

            Assert.Equal(Guid.Empty, aggregate.Guid);
        }