@iyonger/aptos-web3-bip44.js
Version:
Web3 SDK For Aptos
100 lines (84 loc) • 3.51 kB
text/typescript
// Copyright (c) Aptos
// SPDX-License-Identifier: Apache-2.0
import { FaucetClient } from "./faucet_client";
import { AptosAccount } from "./aptos_account";
import { AptosClient } from "./aptos_client";
import { TokenClient } from "./token_client";
import { FAUCET_URL, NODE_URL } from "./utils/test_helper.test";
test(
"full tutorial nft token flow",
async () => {
const client = new AptosClient(NODE_URL);
const faucetClient = new FaucetClient(NODE_URL, FAUCET_URL);
const tokenClient = new TokenClient(client);
const alice = new AptosAccount();
const bob = new AptosAccount();
// Fund both Alice's and Bob's Account
await faucetClient.fundAccount(alice.address(), 10000000);
await faucetClient.fundAccount(bob.address(), 10000000);
const collectionName = "AliceCollection";
const tokenName = "Alice Token";
// Create collection and token on Alice's account
await client.waitForTransaction(
await tokenClient.createCollection(alice, collectionName, "Alice's simple collection", "https://aptos.dev"),
{ checkSuccess: true },
);
await client.waitForTransaction(
await tokenClient.createToken(
alice,
collectionName,
tokenName,
"Alice's simple token",
1,
"https://aptos.dev/img/nyan.jpeg",
1000,
alice.address(),
0,
0,
["key"],
["2"],
["int"],
),
{ checkSuccess: true },
);
const tokenId = {
token_data_id: {
creator: alice.address().hex(),
collection: collectionName,
name: tokenName,
},
property_version: "0",
};
// Transfer Token from Alice's Account to Bob's Account
await tokenClient.getCollectionData(alice.address().hex(), collectionName);
let aliceBalance = await tokenClient.getTokenForAccount(alice.address().hex(), tokenId);
expect(aliceBalance.amount).toBe("1");
const tokenData = await tokenClient.getTokenData(alice.address().hex(), collectionName, tokenName);
expect(tokenData.name).toBe(tokenName);
await client.waitForTransaction(
await tokenClient.offerToken(alice, bob.address().hex(), alice.address().hex(), collectionName, tokenName, 1),
{ checkSuccess: true },
);
aliceBalance = await tokenClient.getTokenForAccount(alice.address().hex(), tokenId);
expect(aliceBalance.amount).toBe("0");
await client.waitForTransaction(
await tokenClient.cancelTokenOffer(alice, bob.address().hex(), alice.address().hex(), collectionName, tokenName),
{ checkSuccess: true },
);
aliceBalance = await tokenClient.getTokenForAccount(alice.address().hex(), tokenId);
expect(aliceBalance.amount).toBe("1");
await client.waitForTransaction(
await tokenClient.offerToken(alice, bob.address().hex(), alice.address().hex(), collectionName, tokenName, 1),
{ checkSuccess: true },
);
aliceBalance = await tokenClient.getTokenForAccount(alice.address().hex(), tokenId);
expect(aliceBalance.amount).toBe("0");
await client.waitForTransaction(
await tokenClient.claimToken(bob, alice.address().hex(), alice.address().hex(), collectionName, tokenName),
{ checkSuccess: true },
);
const bobBalance = await tokenClient.getTokenForAccount(bob.address().hex(), tokenId);
expect(bobBalance.amount).toBe("1");
},
60 * 1000,
);