12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const anchor = require("@project-serum/anchor");
- const assert = require("assert");
- describe("events", () => {
- // Configure the client to use the local cluster.
- anchor.setProvider(anchor.Provider.env());
- const program = anchor.workspace.Events;
- it("Is initialized!", async () => {
- let listener = null;
- let [event, slot] = await new Promise((resolve, _reject) => {
- listener = program.addEventListener("MyEvent", (event, slot) => {
- resolve([event, slot]);
- });
- program.rpc.initialize();
- });
- await program.removeEventListener(listener);
- assert.ok(slot > 0);
- assert.ok(event.data.toNumber() === 5);
- assert.ok(event.label === "hello");
- });
- it("Multiple events", async () => {
- // Sleep so we don't get this transaction has already been processed.
- await sleep(2000);
- let listenerOne = null;
- let listenerTwo = null;
- let [eventOne, slotOne] = await new Promise((resolve, _reject) => {
- listenerOne = program.addEventListener("MyEvent", (event, slot) => {
- resolve([event, slot]);
- });
- program.rpc.initialize();
- });
- let [eventTwo, slotTwo] = await new Promise((resolve, _reject) => {
- listenerTwo = program.addEventListener("MyOtherEvent", (event, slot) => {
- resolve([event, slot]);
- });
- program.rpc.testEvent();
- });
- await program.removeEventListener(listenerOne);
- await program.removeEventListener(listenerTwo);
- assert.ok(slotOne > 0);
- assert.ok(eventOne.data.toNumber() === 5);
- assert.ok(eventOne.label === "hello");
- assert.ok(slotTwo > 0);
- assert.ok(eventTwo.data.toNumber() === 6);
- assert.ok(eventTwo.label === "bye");
- });
- });
- function sleep(ms) {
- return new Promise((resolve) => setTimeout(resolve, ms));
- }
|