UNPKG

@uniswap/smart-wallet-sdk

Version:

⚒️ An SDK for building applications with smart wallets on Uniswap

117 lines 7.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const viem_1 = require("viem"); const batchedCallPlanner_1 = require("./batchedCallPlanner"); const callPlanner_1 = require("./callPlanner"); const testConstants_1 = require("./testConstants"); describe('BatchedCallPlanner', () => { describe('constructor', () => { it('should initialize with the provided CallPlanner and default revertOnFailure as false', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); expect(batchedPlanner.callPlanner).toBe(callPlanner); expect(batchedPlanner.revertOnFailure).toBe(true); }); it('should initialize with the provided CallPlanner and revertOnFailure value', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner, false); expect(batchedPlanner.callPlanner).toBe(callPlanner); expect(batchedPlanner.revertOnFailure).toBe(false); }); }); describe('value', () => { it('should return the value from the underlying callPlanner', () => { const callPlanner = new callPlanner_1.CallPlanner([ { to: testConstants_1.TEST_ADDRESS_1, data: testConstants_1.TEST_DATA_1, value: testConstants_1.TEST_VALUE_1 }, { to: testConstants_1.TEST_ADDRESS_1, data: testConstants_1.TEST_DATA_2, value: testConstants_1.TEST_VALUE_2 } ]); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); expect(batchedPlanner.value.toString()).toBe('300'); }); it('should return 0 when no calls are present in the callPlanner', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); expect(batchedPlanner.value.toString()).toBe('0'); }); }); describe('add', () => { it('should add a new call to the underlying callPlanner', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); batchedPlanner.add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1); expect(callPlanner.calls).toEqual([{ to: testConstants_1.TEST_ADDRESS_1, data: testConstants_1.TEST_DATA_1, value: testConstants_1.TEST_VALUE_1 }]); }); it('should return the batchedPlanner instance for chaining', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); const result = batchedPlanner.add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1); expect(result).toBe(batchedPlanner); }); it('should allow chaining multiple add calls', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); batchedPlanner .add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1) .add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_2, testConstants_1.TEST_DATA_2); expect(callPlanner.calls).toEqual([ { to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_1, data: testConstants_1.TEST_DATA_1 }, { to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_2, data: testConstants_1.TEST_DATA_2 } ]); }); }); describe('encode', () => { it('should correctly abi encode the batch call with revertOnFailure=false', () => { const callPlanner = new callPlanner_1.CallPlanner(); callPlanner.add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); const encoded = batchedPlanner.encode(); // decode the encoded data const decoded = (0, viem_1.decodeAbiParameters)(batchedCallPlanner_1.BATCHED_CALL_ABI_PARAMS, encoded); expect(decoded).toEqual([{ calls: [{ to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_1, data: testConstants_1.TEST_DATA_1 }], revertOnFailure: true }]); }); it('should correctly abi encode the batch call with revertOnFailure=false', () => { const callPlanner = new callPlanner_1.CallPlanner(); callPlanner.add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner, false); const encoded = batchedPlanner.encode(); // decode the encoded data const decoded = (0, viem_1.decodeAbiParameters)(batchedCallPlanner_1.BATCHED_CALL_ABI_PARAMS, encoded); expect(decoded).toEqual([{ calls: [{ to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_1, data: testConstants_1.TEST_DATA_1 }], revertOnFailure: false }]); }); it('should encode multiple calls correctly', () => { const callPlanner = new callPlanner_1.CallPlanner(); callPlanner .add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_1, testConstants_1.TEST_DATA_1) .add(testConstants_1.TEST_ADDRESS_1, testConstants_1.TEST_VALUE_2, testConstants_1.TEST_DATA_2); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); const encoded = batchedPlanner.encode(); // decode the encoded data const decoded = (0, viem_1.decodeAbiParameters)(batchedCallPlanner_1.BATCHED_CALL_ABI_PARAMS, encoded); expect(decoded).toEqual([{ calls: [ { to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_1, data: testConstants_1.TEST_DATA_1 }, { to: testConstants_1.TEST_ADDRESS_1, value: testConstants_1.TEST_VALUE_2, data: testConstants_1.TEST_DATA_2 } ], revertOnFailure: true }]); }); it('should encode an empty calls array', () => { const callPlanner = new callPlanner_1.CallPlanner(); const batchedPlanner = new batchedCallPlanner_1.BatchedCallPlanner(callPlanner); const encoded = batchedPlanner.encode(); // decode the encoded data const decoded = (0, viem_1.decodeAbiParameters)(batchedCallPlanner_1.BATCHED_CALL_ABI_PARAMS, encoded); expect(decoded).toEqual([{ calls: [], revertOnFailure: true }]); }); }); }); //# sourceMappingURL=batchedCallPlanner.test.js.map