123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- import { Keypair } from "@solana/web3.js";
- import {
- AddEntity,
- CreateSession,
- InitializeComponent,
- ApplySystem,
- anchor,
- BN,
- Session,
- } from "../../clients/bolt-sdk/lib";
- import { expect } from "chai";
- // TODO: Create the API for it.
- export function session(framework) {
- describe("Session", () => {
- let session: Session;
- let entity: anchor.web3.PublicKey;
- let component: anchor.web3.PublicKey;
- let entityWithAuthority: anchor.web3.PublicKey;
- let componentWithAuthority: anchor.web3.PublicKey;
- it("Create Session", async () => {
- const createSession = await CreateSession({
- authority: framework.provider.wallet.publicKey,
- topUp: new BN(1000000000),
- });
- session = createSession.session;
- await framework.provider.sendAndConfirm(createSession.transaction, [
- session.signer,
- ]);
- });
- it("Add entity 1", async () => {
- const addEntity = await AddEntity({
- payer: framework.provider.wallet.publicKey,
- world: framework.worldPda,
- connection: framework.provider.connection,
- });
- await framework.provider.sendAndConfirm(addEntity.transaction);
- entity = addEntity.entityPda;
- });
- it("Initialize position component", async () => {
- const initializeComponent = await InitializeComponent({
- payer: session.signer.publicKey,
- entity: entity,
- componentId: framework.exampleComponentPosition.programId,
- });
- await framework.provider.sendAndConfirm(initializeComponent.transaction, [
- session.signer,
- ]);
- component = initializeComponent.componentPda;
- });
- it("Apply Fly System on component using session token", async () => {
- const positionBefore =
- await framework.exampleComponentPosition.account.position.fetch(
- component,
- );
- const applySystem = await ApplySystem({
- authority: session.signer.publicKey,
- systemId: framework.systemFly.programId,
- world: framework.worldPda,
- session,
- entities: [
- {
- entity: entity,
- components: [
- { componentId: framework.exampleComponentPosition.programId },
- ],
- },
- ],
- });
- await framework.provider.sendAndConfirm(applySystem.transaction, [
- session.signer,
- ]);
- const positionAfter =
- await framework.exampleComponentPosition.account.position.fetch(
- component,
- );
- expect(positionAfter.x.toNumber()).to.equal(positionBefore.x.toNumber());
- expect(positionAfter.y.toNumber()).to.equal(positionBefore.y.toNumber());
- expect(positionAfter.z.toNumber()).to.equal(
- positionBefore.z.toNumber() + 1,
- );
- });
- it("Add entity for authority test", async () => {
- const addEntity = await AddEntity({
- payer: framework.provider.wallet.publicKey,
- world: framework.worldPda,
- connection: framework.provider.connection,
- });
- await framework.provider.sendAndConfirm(addEntity.transaction);
- entityWithAuthority = addEntity.entityPda;
- });
- it("Initialize position component with authority", async () => {
- const initializeComponent = await InitializeComponent({
- payer: session.signer.publicKey,
- entity: entityWithAuthority,
- componentId: framework.exampleComponentPosition.programId,
- authority: framework.provider.wallet.publicKey,
- });
- await framework.provider.sendAndConfirm(initializeComponent.transaction, [
- session.signer,
- ]);
- componentWithAuthority = initializeComponent.componentPda;
- });
- it("Apply Fly System on component with authority using session token", async () => {
- const positionBefore =
- await framework.exampleComponentPosition.account.position.fetch(
- componentWithAuthority,
- );
- const applySystem = await ApplySystem({
- authority: session.signer.publicKey,
- systemId: framework.systemFly.programId,
- world: framework.worldPda,
- session,
- entities: [
- {
- entity: entityWithAuthority,
- components: [
- { componentId: framework.exampleComponentPosition.programId },
- ],
- },
- ],
- });
- await framework.provider.sendAndConfirm(applySystem.transaction, [
- session.signer,
- ]);
- const positionAfter =
- await framework.exampleComponentPosition.account.position.fetch(
- componentWithAuthority,
- );
- expect(positionAfter.x.toNumber()).to.equal(positionBefore.x.toNumber());
- expect(positionAfter.y.toNumber()).to.equal(positionBefore.y.toNumber());
- expect(positionAfter.z.toNumber()).to.equal(
- positionBefore.z.toNumber() + 1,
- );
- });
- });
- }
|