golangci-lint/.github/peril/tests/invite-collaborator.test.ts
Denis Isaev 4c94e3400e
dev: add peril to invite contributors
Invite a contributor to GolangCI
organization after a first pull request
get merged.
2020-05-17 17:44:43 +03:00

66 lines
1.7 KiB
TypeScript

jest.mock("danger", () => jest.fn());
import * as danger from "danger";
const dm = danger as any;
import { inviteCollaborator } from "../rules/invite-collaborator";
beforeEach(() => {
dm.danger = {
github: {
thisPR: {
owner: "gatsbyjs",
repo: "peril-gatsbyjs",
number: 1,
},
pr: {
user: {
login: "someUser",
},
},
api: {
orgs: {
getTeamMembership: () => Promise.resolve({ meta: { status: "404" } }),
addTeamMembership: jest.fn(() =>
Promise.resolve({ data: { state: "pending" } })
),
},
issues: {
createComment: jest.fn(),
},
},
},
};
});
describe("a closed pull request", () => {
it("was merged and authored by a first-time contributor", async () => {
dm.danger.github.pr.merged = true;
await inviteCollaborator();
expect(dm.danger.github.api.issues.createComment).toBeCalled();
expect(dm.danger.github.api.orgs.addTeamMembership).toBeCalled();
});
it("was merged and authored by an existing collaborator", async () => {
dm.danger.github.pr.merged = true;
dm.danger.github.api.orgs.getTeamMembership = () =>
Promise.resolve({ headers: { status: "204 No Content" } });
await inviteCollaborator();
expect(dm.danger.github.api.issues.createComment).not.toBeCalled();
});
it("does not comment if invitation failed", async () => {
dm.danger.github.pr.merged = true;
dm.danger.github.api.orgs.addTeamMembership = () =>
Promise.reject({ headers: { status: "422 Unprocessable Entity" } });
await inviteCollaborator();
expect(dm.danger.github.api.issues.createComment).not.toBeCalled();
});
});