Skip to content

gramiojs/test

Repository files navigation

@gramio/test

npm npm downloads JSR JSR Score

@gramio/test

A library for testing bots built with GramIO.

import { beforeEach, describe, expect, it } from "bun:test";
import { Bot, type ContextType } from "gramio";
import { TelegramTestEnvironment } from "../src/index.ts";
import { MessageObject } from "../src/objects/message.ts";

describe("TelegramTestEnvironment", () => {
    const bot = new Bot("test");
    let environment: TelegramTestEnvironment;

    beforeEach(() => {
        environment = new TelegramTestEnvironment(bot);
    });

    it("should create a user", () => {
        const user = environment.createUser();

        expect(user).toBeDefined();
        expect(environment.users).toContain(user);
    });

    it("should create a message", async () => {
        let receivedMessage: ContextType<Bot, "message"> | undefined;

        bot.on("message", (ctx) => {
            receivedMessage = ctx;
            console.log(ctx);
        });

        const user = environment.createUser();
        const message = new MessageObject({
            text: "Hello",
        }).from(user);

        await environment.emitUpdate(message);

        expect(receivedMessage).toBeDefined();
        expect(receivedMessage?.text).toBe("Hello");
        expect(receivedMessage?.from?.id).toBe(user.payload.id);
        expect(receivedMessage?.chat?.id).toBe(user.asChat.payload.id);
        expect(receivedMessage?.chat?.type).toBe("private");
        expect(receivedMessage?.id).toBe(message.payload.message_id);
        expect(receivedMessage?.createdAt).toBe(message.payload.date);
    });
});

About

MVP proposal of testing bots with GramIO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published