public void Should_Throw_Exception_When_Extracts_Are_From_Drifferent_Banks()
        {
            // Arrange

            // extract 1
            var bank1 = new BankAccount()
            {
                AccountId = 1,
                BankCode  = 1,
                Type      = "CHECKING"
            };

            var extract1 = new Extract()
            {
                BankAccount = bank1
            };

            // extract 2
            var bank2 = new BankAccount()
            {
                AccountId = 2,
                BankCode  = 1,
                Type      = "CHECKING"
            };

            var extract2 = new Extract()
            {
                BankAccount = bank2
            };

            var extracts = new List <Extract>()
            {
                extract1, extract2
            };

            // Test
            var reconciliationService = new BankOperationDomainService();

            reconciliationService.ConsolidateExtracts(extracts);
        }
        public void Should_Not_Return_Duplicated_Transactions_When_Same_Transaction_In_Different_Files()
        {
            // Arrange

            //OFX 1
            var transaction1_ofx1 = new Transaction()
            {
                Date        = "20140203100000[-03:EST]",
                Description = "Transacao 1",
                Type        = "DEBIT",
                Value       = 1
            };

            var transaction2_ofx1 = new Transaction()
            {
                Date        = "20140204100000[-03:EST]",
                Description = "Transacao 1",
                Type        = "CREDIT",
                Value       = 1
            };

            var transaction3_ofx1 = new Transaction()
            {
                Date        = "20140204100000[-04:EST]",
                Description = "Transacao 1",
                Type        = "DEBIT",
                Value       = 1
            };

            var extract1 = new Extract()
            {
                Transactions = new List <Transaction>()
                {
                    transaction1_ofx1,
                    transaction2_ofx1,
                    transaction3_ofx1
                }
            };

            //OFX 2
            var transaction1_ofx2 = new Transaction()
            {
                Date        = "20140204100000[-03:EST]",
                Description = "Transacao 1",
                Type        = "CREDIT",
                Value       = 1
            };

            var transaction2_ofx2 = new Transaction()
            {
                Date        = "20140205100000[-03:EST]",
                Description = "Transacao 1",
                Type        = "DEBIT",
                Value       = 1
            };

            var transaction3_ofx2 = new Transaction()
            {
                Date        = "20140211100000[-03:EST]",
                Description = "Transacao 1",
                Type        = "CREDIT",
                Value       = 1
            };

            var extract2 = new Extract()
            {
                Transactions = new List <Transaction>()
                {
                    transaction1_ofx2,
                    transaction2_ofx2,
                    transaction3_ofx2
                }
            };

            var extracts = new List <Extract>()
            {
                extract1,
                extract2
            };

            // Test
            var reconciliationService = new BankOperationDomainService();
            var result = reconciliationService.ConsolidateExtracts(extracts);

            // Assert
            Assert.AreEqual(5, result.Transactions.Count);
        }