75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
// You can import your modules
|
|
// import index from '../src/index'
|
|
|
|
import nock from "nock";
|
|
// Requiring our app implementation
|
|
import myProbotApp from "../src";
|
|
import { Probot, ProbotOctokit } from "probot";
|
|
// Requiring our fixtures
|
|
import payload from "./fixtures/issues.opened.json";
|
|
const issueCreatedBody = { body: "Thanks for opening this issue!" };
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const privateKey = fs.readFileSync(
|
|
path.join(__dirname, "fixtures/mock-cert.pem"),
|
|
"utf-8"
|
|
);
|
|
|
|
describe("My Probot app", () => {
|
|
let probot: any;
|
|
|
|
beforeEach(() => {
|
|
nock.disableNetConnect();
|
|
probot = new Probot({
|
|
appId: 123,
|
|
privateKey,
|
|
// disable request throttling and retries for testing
|
|
Octokit: ProbotOctokit.defaults({
|
|
retry: { enabled: false },
|
|
throttle: { enabled: false },
|
|
}),
|
|
});
|
|
// Load our app into probot
|
|
probot.load(myProbotApp);
|
|
});
|
|
|
|
test("creates a comment when an issue is opened", async () => {
|
|
const mock = nock("https://api.github.com")
|
|
// Test that we correctly return a test token
|
|
.post("/app/installations/2/access_tokens")
|
|
.reply(200, {
|
|
token: "test",
|
|
permissions: {
|
|
issues: "write",
|
|
},
|
|
})
|
|
|
|
// Test that a comment is posted
|
|
.post("/repos/hiimbex/testing-things/issues/1/comments", (body: any) => {
|
|
expect(body).toMatchObject(issueCreatedBody);
|
|
return true;
|
|
})
|
|
.reply(200);
|
|
|
|
// Receive a webhook event
|
|
await probot.receive({ name: "issues", payload });
|
|
|
|
expect(mock.pendingMocks()).toStrictEqual([]);
|
|
});
|
|
|
|
afterEach(() => {
|
|
nock.cleanAll();
|
|
nock.enableNetConnect();
|
|
});
|
|
});
|
|
|
|
// For more information about testing with Jest see:
|
|
// https://facebook.github.io/jest/
|
|
|
|
// For more information about using TypeScript in your tests, Jest recommends:
|
|
// https://github.com/kulshekhar/ts-jest
|
|
|
|
// For more information about testing with Nock see:
|
|
// https://github.com/nock/nock
|