58 lines
No EOL
1.9 KiB
JavaScript
58 lines
No EOL
1.9 KiB
JavaScript
const TransactionPool = require('./transaction-pool');
|
|
const Transaction = require('./Cointransaction');
|
|
const Wallet = require('./index');
|
|
const Blockchain = require('../blockchain');
|
|
|
|
describe('TransactionPool', () => {
|
|
let tp, wallet, transaction, bc;
|
|
|
|
beforeEach(() => {
|
|
tp = new TransactionPool();
|
|
wallet = new Wallet();
|
|
bc = new Blockchain();
|
|
transaction = wallet.createCoinTransaction('r4nd-4dr355', 30,20,9014,'temp','123abc', bc, tp);
|
|
});
|
|
|
|
it('adds a transaction to the pool', () => {
|
|
expect(tp.paymenttransactions.find(t => t.id === transaction.id)).toEqual(transaction);
|
|
});
|
|
|
|
it('updates a transaction in the pool', () => {
|
|
const oldTransaction = JSON.stringify(transaction);
|
|
const newTransaction = transaction.update(wallet, 'foo-4ddr355', 40,20,9014,'temp','123abc');
|
|
tp.updateOrAddPaymentTransaction(newTransaction);
|
|
|
|
expect(JSON.stringify(tp.paymenttransactions.find(t => t.id === newTransaction.id)))
|
|
.not.toEqual(oldTransaction);
|
|
});
|
|
|
|
it('clears transactions', () => {
|
|
tp.clear();
|
|
expect(tp.paymenttransactions).toEqual([]);
|
|
});
|
|
|
|
describe('mixing valid and corrupt transactions', () => {
|
|
let validTransactions;
|
|
|
|
beforeEach(() => {
|
|
validTransactions = [...tp.paymenttransactions];
|
|
for (let i=0; i<6; i++) {
|
|
wallet = new Wallet();
|
|
transaction = wallet.createCoinTransaction('r4nd-4dr355', 30,20,9014,'temp','123abc', bc, tp);
|
|
if (i%2==0) {
|
|
transaction.input.amount = 99999;
|
|
} else {
|
|
validTransactions.push(transaction);
|
|
}
|
|
}
|
|
});
|
|
|
|
it('shows a difference between valid and corrupt transactions', () => {
|
|
expect(JSON.stringify(tp.paymenttransactions)).not.toEqual(JSON.stringify(validTransactions));
|
|
});
|
|
|
|
it('grabs valid transactions', () => {
|
|
expect(tp.validTransactions()).toEqual(validTransactions);
|
|
});
|
|
});
|
|
}); |