Пример #1
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);
        }
        public void TestHandle()
        {
            var depositGuid        = Guid.NewGuid();
            var accountGuid        = Guid.NewGuid();
            var eventGuid          = Guid.NewGuid();
            var createDepositEvent = new CreateDepositEvent
            {
                ItemGuid    = depositGuid,
                AccountGuid = accountGuid,
                EventGuid   = eventGuid
            };
            var depositServiceMock = new Mock <IService <DepositModel> >();

            depositServiceMock.Setup(m =>
                                     m.Save(It.Is <DepositModel>(model => model.Guid == depositGuid && model.Account.Guid == accountGuid)));
            var eventHandler = new CreateDepositEventHandler(depositServiceMock.Object);

            eventHandler.Handle(createDepositEvent);

            depositServiceMock.VerifyAll();
        }
Пример #3
0
        public override void Handle(ICommand item)
        {
            var createDepositCommand = (CreateDepositCommand)item;
            var accountId            = createDepositCommand.AccountId;

            if (accountId.Equals(Guid.Empty))
            {
                var errorEvent = new ErrorEvent(Guid.NewGuid(), Guid.Empty, createDepositCommand, "Account Guid empty");
                _eventPublisher.Publish(errorEvent);
                return;
            }

            var account = _accountAggregateService.Load(accountId);

            if (account.Guid.Equals(Guid.Empty))
            {
                var errorEvent = new ErrorEvent(Guid.NewGuid(), accountId, account, "Account not found");
                _eventPublisher.Publish(errorEvent);
                return;
            }

            var depositGuid = GetDepositGuid();

            var createDepositEvent = new CreateDepositEvent {
                ItemGuid    = depositGuid,
                AccountGuid = accountId
            };

            _eventPublisher.Publish(createDepositEvent);

            var addDepositToAccountEvent = new AddDepositToAccountEvent
            {
                ItemGuid  = accountId,
                DepositId = depositGuid
            };

            _eventPublisher.Publish(addDepositToAccountEvent);
        }