deposit-liquidity.ts 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import * as anchor from "@coral-xyz/anchor";
  2. import { Program } from "@coral-xyz/anchor";
  3. import { SwapExample } from "../target/types/swap_example";
  4. import { expect } from "chai";
  5. import { TestValues, createValues, mintingTokens } from "./utils";
  6. describe("Deposit liquidity", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. const connection = provider.connection;
  9. anchor.setProvider(provider);
  10. const program = anchor.workspace.SwapExample as Program<SwapExample>;
  11. let values: TestValues;
  12. beforeEach(async () => {
  13. values = createValues();
  14. await program.methods
  15. .createAmm(values.id, values.fee)
  16. .accounts({ amm: values.ammKey, admin: values.admin.publicKey })
  17. .rpc();
  18. await mintingTokens({
  19. connection,
  20. creator: values.admin,
  21. mintAKeypair: values.mintAKeypair,
  22. mintBKeypair: values.mintBKeypair,
  23. });
  24. await program.methods
  25. .createPool()
  26. .accounts({
  27. amm: values.ammKey,
  28. pool: values.poolKey,
  29. poolAuthority: values.poolAuthority,
  30. mintLiquidity: values.mintLiquidity,
  31. mintA: values.mintAKeypair.publicKey,
  32. mintB: values.mintBKeypair.publicKey,
  33. poolAccountA: values.poolAccountA,
  34. poolAccountB: values.poolAccountB,
  35. })
  36. .rpc();
  37. });
  38. it("Deposit equal amounts", async () => {
  39. await program.methods
  40. .depositLiquidity(values.depositAmountA, values.depositAmountA)
  41. .accounts({
  42. pool: values.poolKey,
  43. poolAuthority: values.poolAuthority,
  44. depositor: values.admin.publicKey,
  45. mintLiquidity: values.mintLiquidity,
  46. mintA: values.mintAKeypair.publicKey,
  47. mintB: values.mintBKeypair.publicKey,
  48. poolAccountA: values.poolAccountA,
  49. poolAccountB: values.poolAccountB,
  50. depositorAccountLiquidity: values.liquidityAccount,
  51. depositorAccountA: values.holderAccountA,
  52. depositorAccountB: values.holderAccountB,
  53. })
  54. .signers([values.admin])
  55. .rpc({ skipPreflight: true });
  56. const depositTokenAccountLiquditiy =
  57. await connection.getTokenAccountBalance(values.liquidityAccount);
  58. expect(depositTokenAccountLiquditiy.value.amount).to.equal(
  59. values.depositAmountA.sub(values.minimumLiquidity).toString()
  60. );
  61. const depositTokenAccountA = await connection.getTokenAccountBalance(
  62. values.holderAccountA
  63. );
  64. expect(depositTokenAccountA.value.amount).to.equal(
  65. values.defaultSupply.sub(values.depositAmountA).toString()
  66. );
  67. const depositTokenAccountB = await connection.getTokenAccountBalance(
  68. values.holderAccountB
  69. );
  70. expect(depositTokenAccountB.value.amount).to.equal(
  71. values.defaultSupply.sub(values.depositAmountA).toString()
  72. );
  73. });
  74. });