anchor/tests/tictactoe/tests/tictactoe.js

158 lines
3.9 KiB
JavaScript

const anchor = require("@coral-xyz/anchor");
describe("tictactoe", () => {
anchor.setProvider(anchor.AnchorProvider.env());
const program = anchor.workspace.Tictactoe;
let dashboard = anchor.web3.Keypair.generate();
let game = anchor.web3.Keypair.generate();
let player_o = anchor.web3.Keypair.generate();
it("Initialize Dashboard", async () => {
const tx = await program.rpc.initializeDashboard({
accounts: {
authority: program.provider.wallet.publicKey,
dashboard: dashboard.publicKey,
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
},
signers: [dashboard],
instructions: [
await program.account.dashboard.createInstruction(dashboard),
],
});
console.log("transaction: ", tx);
});
it("Initialize Game", async () => {
const tx = await program.rpc.initialize({
accounts: {
playerX: program.provider.wallet.publicKey,
dashboard: dashboard.publicKey,
game: game.publicKey,
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
},
signers: [game],
instructions: [await program.account.game.createInstruction(game)],
});
console.log("transaction: ", tx);
});
it("Player O joins", async () => {
const tx = await program.rpc.playerJoin({
accounts: {
playerO: player_o.publicKey,
game: game.publicKey,
},
signers: [player_o],
});
console.log("transaction: ", tx);
});
it("Player x plays", async () => {
const tx = await program.rpc.playerMove(1, 0, {
accounts: {
player: program.provider.wallet.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
it("Player o plays", async () => {
const tx = await program.rpc.playerMove(2, 1, {
accounts: {
player: player_o.publicKey,
game: game.publicKey,
},
signers: [player_o],
});
console.log("transaction: ", tx);
});
it("Player x plays", async () => {
const tx = await program.rpc.playerMove(1, 3, {
accounts: {
player: program.provider.wallet.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
it("Player o plays", async () => {
const tx = await program.rpc.playerMove(2, 6, {
accounts: {
player: player_o.publicKey,
game: game.publicKey,
},
signers: [player_o],
});
console.log("transaction: ", tx);
});
it("Player x plays", async () => {
const tx = await program.rpc.playerMove(1, 2, {
accounts: {
player: program.provider.wallet.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
it("Player o plays", async () => {
const tx = await program.rpc.playerMove(2, 4, {
accounts: {
player: player_o.publicKey,
game: game.publicKey,
},
signers: [player_o],
});
console.log("transaction: ", tx);
});
it("Player x plays", async () => {
const tx = await program.rpc.playerMove(1, 5, {
accounts: {
player: program.provider.wallet.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
it("Player o plays", async () => {
const tx = await program.rpc.playerMove(2, 8, {
accounts: {
player: player_o.publicKey,
game: game.publicKey,
},
signers: [player_o],
});
console.log("transaction: ", tx);
});
it("Player x plays", async () => {
const tx = await program.rpc.playerMove(1, 7, {
accounts: {
player: program.provider.wallet.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
it("Status", async () => {
const tx = await program.rpc.status({
accounts: {
dashboard: dashboard.publicKey,
game: game.publicKey,
},
});
console.log("transaction: ", tx);
});
});