public void Rollback_DataWriterRollbackThrowsException_ExceptionIsPropogated()
        {
            var dataDestination1 = MockRepository.GenerateMock <IDataDestination>();
            var dataDestination2 = MockRepository.GenerateMock <IDataDestination>();
            var dataWriter1      = MockRepository.GenerateMock <IDataWriter>();
            var dataWriter2      = MockRepository.GenerateMock <IDataWriter>();
            var recordExpander   = MockRepository.GenerateMock <IRecordExpander>();

            dataWriter1.Stub(x => x.Rollback()).Throw(new InternalTestFailureException());

            var dataWriters = new Dictionary <IDataDestination, IDataWriter>();

            dataWriters.Add(dataDestination1, dataWriter1);
            dataWriters.Add(dataDestination2, dataWriter2);

            var expandedDataWriter = new ExpandedDataWriter(dataWriters, recordExpander);

            try
            {
                expandedDataWriter.Rollback();
            }
            catch (AggregateException ae)
            {
                Assert.IsTrue(ae.InnerException is InternalTestFailureException);

                return;
            }

            Assert.Fail();
        }
        public void Rollback_MultipleDataDestinations_AllDataWritersAreRolledBack()
        {
            var dataDestination1 = MockRepository.GenerateMock <IDataDestination>();
            var dataDestination2 = MockRepository.GenerateMock <IDataDestination>();
            var dataWriter1      = MockRepository.GenerateMock <IDataWriter>();
            var dataWriter2      = MockRepository.GenerateMock <IDataWriter>();
            var recordExpander   = MockRepository.GenerateMock <IRecordExpander>();

            dataWriter1.Expect(x => x.Rollback());
            dataWriter2.Expect(x => x.Rollback());

            var dataWriters = new Dictionary <IDataDestination, IDataWriter>();

            dataWriters.Add(dataDestination1, dataWriter1);
            dataWriters.Add(dataDestination2, dataWriter2);

            var expandedDataWriter = new ExpandedDataWriter(dataWriters, recordExpander);

            expandedDataWriter.Rollback();

            dataWriter1.VerifyAllExpectations();
            dataWriter2.VerifyAllExpectations();
        }