balances.spec.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-License-Identifier: Apache-2.0
  2. import expect from 'expect';
  3. import {Transaction, SystemProgram, sendAndConfirmTransaction, Keypair, LAMPORTS_PER_SOL} from '@solana/web3.js';
  4. import { loadContractAndCallConstructor } from './setup';
  5. import {BN} from '@coral-xyz/anchor';
  6. describe('Deploy solang contract and test', function () {
  7. this.timeout(500000);
  8. it('balances', async function () {
  9. let { program, storage, payer, provider } = await loadContractAndCallConstructor('balances', []);
  10. let res = await program.methods.getBalance()
  11. .accounts({
  12. acc1: payer.publicKey
  13. })
  14. .view();
  15. let bal = Number(res);
  16. let rpc_bal = await provider.connection.getBalance(payer.publicKey);
  17. expect(bal + 5000).toBe(rpc_bal);
  18. /// transfer some lamports to the storage account
  19. let transaction = new Transaction().add(
  20. SystemProgram.transfer({
  21. fromPubkey: payer.publicKey,
  22. toPubkey: storage.publicKey,
  23. lamports: LAMPORTS_PER_SOL,
  24. }),
  25. );
  26. // Sign transaction, broadcast, and confirm
  27. await sendAndConfirmTransaction(provider.connection, transaction, [payer]);
  28. const new_account = Keypair.generate();
  29. const lamports = await provider.connection.getMinimumBalanceForRentExemption(100);
  30. await program.methods.transfer(new BN(lamports))
  31. .accounts({
  32. acc1: storage.publicKey,
  33. acc2: new_account.publicKey,
  34. })
  35. .rpc();
  36. expect(await provider.connection.getBalance(new_account.publicKey)).toBe(lamports);
  37. });
  38. });