Home Reference Source Test

test/specs/generic/network/message/TransactionReceiptsMessage.spec.js

describe('TransactionReceiptsMessage', () => {
    const transactionHash1 = Hash.fromBase64(Dummy.hash1);
    const transactionHash2 = Hash.fromBase64(Dummy.hash2);
    const blockHash1 = Hash.fromBase64(Dummy.hash2);
    const blockHash2 = Hash.fromBase64(Dummy.hash3);
    const blockHeight1 = 42;
    const blockHeight2 = 69;
    const receipt1 = new TransactionReceipt(transactionHash1, blockHash1, blockHeight1);
    const receipt2 = new TransactionReceipt(transactionHash2, blockHash2, blockHeight2);

    it('is correctly constructed', () => {
        const msg = new TransactionReceiptsMessage([receipt1, receipt2]);

        expect(msg.receipts.length).toEqual(2);

        expect(msg.receipts[0].transactionHash.equals(transactionHash1)).toBeTruthy();
        expect(msg.receipts[1].transactionHash.equals(transactionHash2)).toBeTruthy();
        expect(msg.receipts[0].blockHash.equals(blockHash1)).toBeTruthy();
        expect(msg.receipts[1].blockHash.equals(blockHash2)).toBeTruthy();
        expect(msg.receipts[0].blockHeight === blockHeight1).toBeTruthy();
        expect(msg.receipts[1].blockHeight === blockHeight2).toBeTruthy();
    });

    it('is serializable and unserializable', () => {
        const msg1 = new TransactionReceiptsMessage([receipt1, receipt2]);
        const msg2 = TransactionReceiptsMessage.unserialize(msg1.serialize());

        expect(msg2.receipts.length).toEqual(2);
        expect(msg2.receipts[0].transactionHash.equals(transactionHash1)).toBeTruthy();
        expect(msg2.receipts[1].transactionHash.equals(transactionHash2)).toBeTruthy();
        expect(msg2.receipts[0].blockHash.equals(blockHash1)).toBeTruthy();
        expect(msg2.receipts[1].blockHash.equals(blockHash2)).toBeTruthy();
        expect(msg2.receipts[0].blockHeight === blockHeight1).toBeTruthy();
        expect(msg2.receipts[1].blockHeight === blockHeight2).toBeTruthy();
    });

    it('must have well defined arguments', () => {
        expect( () => {
            new TransactionReceiptsMessage(5);
        }).toThrow();
        expect( () => {
            new TransactionReceiptsMessage([undefined]);
        }).toThrow();
    });
});