public void It_sends_all_messages_at_once_after_transaction_is_committed()
        {
            var connectionMock = MockRepository.GenerateMock<IEventStoreConnection>();
            connectionMock.Expect(x => x.AppendToStream(Arg<string>.Is.Anything,
                Arg<int>.Is.Anything,
                Arg<IEnumerable<EventData>>.Is.Anything, Arg<UserCredentials>.Is.Anything)).Repeat.Once().Return(new WriteResult());

            var connectionManager = new FakeConnectionManager()
            {
                Connection = connectionMock
            };
            var uow = new TransactionalUnitOfWork(connectionManager)
            {
                EndpointAddress = new Address("q", "m")
            };

            using (var tx = new TransactionScope())
            {
                uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0]));
                uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0]));
                tx.Complete();
            }

            connectionMock.VerifyAllExpectations();
        }
 public MessagePublisher(TransactionalUnitOfWork transactionalUnitOfWork, 
     IEventSourcedUnitOfWork eventSourcedUnitOfWork, 
     IManageEventStoreConnections connectionManager)
 {
     this.transactionalUnitOfWork = transactionalUnitOfWork;
     this.connectionManager = connectionManager;
     this.eventSourcedUnitOfWork = eventSourcedUnitOfWork;
 }
 public MessagePublisher(TransactionalUnitOfWork transactionalUnitOfWork,
                         IEventSourcedUnitOfWork eventSourcedUnitOfWork,
                         IManageEventStoreConnections connectionManager)
 {
     this.transactionalUnitOfWork = transactionalUnitOfWork;
     this.connectionManager       = connectionManager;
     this.eventSourcedUnitOfWork  = eventSourcedUnitOfWork;
 }
 protected MessageSender CreateSender()
 {
     var connectionManager = new DefaultConnectionManager(ConnectionConfiguration);
     var transactionalUnitOfWork = new TransactionalUnitOfWork(connectionManager)
         {
             EndpointAddress = SenderAddress
         };
     var eventSourcedUnitOfWork = new EventSourcedUnitOfWork(connectionManager)
         {
             EndpointAddress = SenderAddress
         };
     return new MessageSender(transactionalUnitOfWork, eventSourcedUnitOfWork, connectionManager)
         {
             EndpointAddress = SenderAddress
         };
 }
        public void It_does_not_send_events_to_store_before_transaction_is_committed()
        {
            var connectionMock = MockRepository.GenerateMock<IEventStoreConnection>();
            connectionMock.Expect(x => x.AppendToStream(Arg<string>.Is.Anything,
                Arg<int>.Is.Anything,
                Arg<EventData[]>.Is.Anything)).Repeat.Never();

            var connectionManager = new FakeConnectionManager()
                {
                    Connection = connectionMock
                };
            var uow = new TransactionalUnitOfWork(connectionManager)
                {
                    EndpointAddress = new Address("q","m")
                };

            using (new TransactionScope())
            {
                uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0]));
            }

            connectionMock.VerifyAllExpectations();
        }