solmash-whitelist-sdk
Version:
A sdk for interacting Solmash Whitelist program
113 lines (91 loc) • 3.37 kB
text/typescript
import { describe } from "mocha";
import { getAssociatedTokenAddressSync } from "@solana/spl-token";
import { PublicKey } from "@solana/web3.js";
import {
SolmashWhitelistInstructions,
SolmashWhitelistProgramFactory,
SolmashWhitelistService,
} from "../../src";
import { getConnection, getProviders, getSignTransaction, nowInSec } from "../shared";
describe("initAuction()", () => {
const connection = getConnection("devnet");
const provider = getProviders(connection)[0];
const signTransaction = getSignTransaction(provider);
const program = SolmashWhitelistProgramFactory.getProgram(provider, { network: "devnet" });
const inx = new SolmashWhitelistInstructions(program);
const service = new SolmashWhitelistService(inx, connection, signTransaction);
let tokenInPools: number;
let auctionName: string;
it("initialize auction", async () => {
const now = nowInSec();
const preSaleStartTime = now + 60 * 1;
const preSaleEndTime = preSaleStartTime + 60 * 15;
console.log({ preSaleStartTime }, { preSaleEndTime });
const auctionTokenAddress = "8CSvK7xceqUeqRaPr91r5kgteXGcWmBL48aoUQCtdizq";
const bidTokenAddress = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
const ownerAddress = provider.publicKey.toString();
const data = {
ownerAddress,
bidTokenAddress,
auctionTokenAddress,
name: "test wl auction 003",
enabled: true,
preSaleEndTime,
preSaleStartTime,
ticketPriceInSobb: "30",
ticketPriceInSol: "1",
ticketsInPool: "30",
tokenQuantityPerTicket: "100",
};
tokenInPools = Number(data.ticketsInPool) * Number(data.tokenQuantityPerTicket);
auctionName = data.name;
const payload = await service.initAuction(data);
const signature = await payload.execute({ commitment: "finalized" });
console.log({ signature });
});
it("adds token", async () => {
console.log("waiting before adding tokens");
await new Promise((r) => setTimeout(r, 10000));
const ownerAddress = provider.publicKey.toString();
const auctionTokenAddress = "8CSvK7xceqUeqRaPr91r5kgteXGcWmBL48aoUQCtdizq";
const auction = SolmashWhitelistService.deriveAuctionAddress(auctionName, program.programId);
// test assert setup
const ownerAuctionTokenAccount = getAssociatedTokenAddressSync(
new PublicKey(auctionTokenAddress),
new PublicKey(ownerAddress),
);
const auctionVault = SolmashWhitelistService.deriveAuctionVaultAddress(
auction,
program.programId,
);
const auctionVaultTokenAccount = getAssociatedTokenAddressSync(
new PublicKey(auctionTokenAddress),
auctionVault,
true,
);
const { value: ownerAtaBalBefore } = await connection.getTokenAccountBalance(
ownerAuctionTokenAccount,
"confirmed",
);
console.log({ ownerAtaBalBefore });
const payload = await service.addToken({
ownerAddress,
auctionAddress: auction.toString(),
auctionTokenAddress,
});
// console.log({ payload });
const signature = await payload.execute();
console.log({ signature });
const { value: ownerAtaBalAfter } = await connection.getTokenAccountBalance(
ownerAuctionTokenAccount,
"confirmed",
);
const { value: auctionVaultAtaBalAfter } = await connection.getTokenAccountBalance(
auctionVaultTokenAccount,
"confirmed",
);
console.log({ ownerAtaBalAfter });
console.log({ auctionVaultAtaBalAfter });
console.log({ tokenInPools });
});
});