calls.spec.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // SPDX-License-Identifier: Apache-2.0
  2. import expect from 'expect';
  3. import { loadContractAndCallConstructor, loadContractWithProvider } from './setup';
  4. import { BN } from '@coral-xyz/anchor';
  5. describe('Testing calls', function () {
  6. this.timeout(100000);
  7. it('external_call', async function () {
  8. let caller = await loadContractAndCallConstructor('caller');
  9. const provider = caller.provider;
  10. const callee = await loadContractWithProvider(provider, 'callee');
  11. const callee2 = await loadContractWithProvider(provider, 'callee2');
  12. await callee.program.methods.setX(new BN(102))
  13. .accounts({ dataAccount: callee.storage.publicKey })
  14. .rpc({commitment: "processed"});
  15. let res = await callee.program.methods.getX()
  16. .accounts({ dataAccount: callee.storage.publicKey })
  17. .view({commitment: "processed"});
  18. expect(res).toEqual(new BN(102));
  19. res = await caller.program.methods.whoAmI()
  20. .view({commitment: "processed"});
  21. expect(res).toStrictEqual(caller.program_key);
  22. await caller.program.methods.doCall(new BN(13123))
  23. .accounts({
  24. callee_dataAccount: callee.storage.publicKey,
  25. callee_pid: callee.program_key,
  26. })
  27. .rpc({commitment: "processed"});
  28. res = await callee.program.methods.getX()
  29. .accounts({ dataAccount: callee.storage.publicKey })
  30. .view({commitment: "processed"});
  31. expect(res).toEqual(new BN(13123));
  32. res = await caller.program.methods.doCall2(new BN(20000))
  33. .accounts({
  34. callee_dataAccount: callee.storage.publicKey,
  35. callee_pid: callee.program_key,
  36. })
  37. .view({commitment: "processed"});
  38. expect(res).toEqual(new BN(33123));
  39. res = await caller.program.methods.doCall3([new BN(3), new BN(5), new BN(7), new BN(9)], "yo")
  40. .accounts({
  41. callee2_pid: callee2.program_key,
  42. callee_pid: callee.program_key,
  43. })
  44. .view({commitment: "processed"});
  45. expect(res.return0).toEqual(new BN(24));
  46. expect(res.return1).toBe("my name is callee");
  47. res = await caller.program.methods.doCall4([new BN(1), new BN(2), new BN(3), new BN(4)], "asda")
  48. .accounts({
  49. callee2_pid: callee2.program_key,
  50. callee_pid: callee.program_key,
  51. other_callee2: callee2.program_key,
  52. })
  53. .view({commitment: "processed"});
  54. expect(res.return0).toEqual(new BN(10));
  55. expect(res.return1).toBe("x:asda");
  56. });
  57. });