-
Notifications
You must be signed in to change notification settings - Fork 1
/
pumpfun.test.ts
69 lines (60 loc) · 2.32 KB
/
pumpfun.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import Fun from './pumpfun';
import fs from 'fs';
import { clusterApiUrl, Connection, Keypair, LAMPORTS_PER_SOL, TransactionInstruction } from '@solana/web3.js';
import { test, expect, describe } from 'bun:test';
import type { TokenMeta } from './constant';
const connection = new Connection(clusterApiUrl("mainnet-beta"));
const fun = new Fun(connection);
const creator = Keypair.generate();
const token = Keypair.generate();
const tokenImagePath = fs.readFileSync("./image.png", { encoding: "base64" });
const tokenImage = new File([tokenImagePath], "image.png");
const tokenData: TokenMeta = {
name: "Test token",
symbol: "TTK",
description: "A test token",
image: tokenImage,
keypair: token
}
describe('Fun test unit', async () => {
test("init solana connection", () => {
expect(connection).toBeInstanceOf(Connection);
});
test("init pumpfun sdk", () => {
expect(fun).toBeInstanceOf(Fun);
});
test("Generate create token instruction", async () => {
const createIntruct = await fun.compileCreateTokenInstruction({
creator: creator.publicKey,
tokenMeta: tokenData
});
expect(createIntruct).toBeInstanceOf(TransactionInstruction);
expect(createIntruct.data).toBeInstanceOf(Buffer);
});
test("Generate buy token instruction", async () => {
const buyInstruct = await fun.compileBuyInstruction({
solAmount: BigInt(1 * LAMPORTS_PER_SOL),
token: token.publicKey,
trader: creator.publicKey
}, true);
// with type annotation. Same return as above
// fun.compileBuyInstruction<true>({
// solAmount: BigInt(1 * LAMPORTS_PER_SOL),
// token: token.publicKey,
// trader: creator.publicKey
// })
expect(buyInstruct).toBeInstanceOf(Array<TransactionInstruction>);
expect(buyInstruct[0].data).toBeInstanceOf(Buffer);
});
test("Generate sell token instruction [Fail on no bonding curve]", async () => {
expect(
Promise.resolve(
fun.compileSellInstruction({
tokenAmount: 10000000n,
token: token.publicKey,
trader: creator.publicKey
})
)
).rejects.toThrowError("Bonding curve not found");
});
});