Skip to content

Commit

Permalink
fixed tests calling the old method
Browse files Browse the repository at this point in the history
  • Loading branch information
Bullrich committed Oct 3, 2023
1 parent 25cfa08 commit 064f0e5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
15 changes: 7 additions & 8 deletions src/test/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
import { PullRequest, PullRequestReview } from "@octokit/webhooks-types";
import { existsSync, openSync, readFileSync, unlinkSync } from "fs";
import { DeepMockProxy, Matcher, mock, mockDeep, MockProxy } from "jest-mock-extended";
import { DeepMockProxy, mock, mockDeep, MockProxy } from "jest-mock-extended";
import { join } from "path";

import { GitHubChecksApi } from "../github/check";
Expand Down Expand Up @@ -89,16 +89,15 @@ describe("Integration testing", () => {
client.rest.repos.getContent.mockResolvedValue({ data: { content: Buffer.from(config, "utf-8") } });
mockReviews([]);
for (const [teamName, members] of teamsMembers) {
client.rest.teams.listMembersInOrg
// @ts-ignore as the error is related to the matcher type
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call
.calledWith(new Matcher<{ team_slug: string }>((value) => value.team_slug === teamName, "Different team name"))
.mockResolvedValue({
client.paginate
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
.calledWith(client.rest.teams.listMembersInOrg, expect.objectContaining({ team_slug: teamName }))
.mockResolvedValue(
// @ts-ignore as we don't need the full type
data: members.map((m) => {
members.map((m) => {
return { login: m };
}),
});
);
}

// @ts-ignore missing more of the required types
Expand Down
29 changes: 16 additions & 13 deletions src/test/teams.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/ban-ts-comment */
import { DeepMockProxy, Matcher, mock, mockDeep, MockProxy } from "jest-mock-extended";
import { DeepMockProxy, mock, mockDeep, MockProxy } from "jest-mock-extended";

import { GitHubTeamsApi } from "../github/teams";
import { ActionLogger, GitHubClient, TeamApi } from "../github/types";
Expand All @@ -17,41 +18,43 @@ describe("Pull Request API Tests", () => {

test("should call team", async () => {
// @ts-ignore
client.rest.teams.listMembersInOrg.mockResolvedValue({ data: [] });
client.paginate.mockResolvedValue([]);
await teams.getTeamMembers("example");
expect(client.rest.teams.listMembersInOrg).toHaveBeenCalledWith({ org: "org", team_slug: "example" });
expect(client.paginate).toHaveBeenCalledWith(client.rest.teams.listMembersInOrg, {
org: "org",
team_slug: "example",
});
});

test("should return team members", async () => {
// @ts-ignore
client.rest.teams.listMembersInOrg.mockResolvedValue({ data: [{ login: "abc" }, { login: "bcd" }] });
client.paginate.mockResolvedValue([{ login: "abc" }, { login: "bcd" }]);
const members = await teams.getTeamMembers("example");
expect(members).toEqual(["abc", "bcd"]);
});

test("should cache team members call", async () => {
// @ts-ignore
client.rest.teams.listMembersInOrg.mockResolvedValue({ data: [{ login: "abc" }, { login: "bcd" }] });
client.paginate.mockResolvedValue([{ login: "abc" }, { login: "bcd" }]);
for (let i = 0; i < 10; i++) {
const members = await teams.getTeamMembers("example");
expect(members).toEqual(["abc", "bcd"]);
}
expect(client.rest.teams.listMembersInOrg).toHaveBeenCalledTimes(1);
expect(client.paginate).toHaveBeenCalledTimes(1);
});

/**
* Helper class that evades the compiler errors
*/
const mockTeamMembers = (teamName: string, members: string[]) => {
client.rest.teams.listMembersInOrg
// @ts-ignore as the error is related to the matcher type
.calledWith(new Matcher<{ team_slug: string }>((value) => value.team_slug === teamName, "Different team name"))
.mockResolvedValue({
client.paginate
.calledWith(client.rest.teams.listMembersInOrg, expect.objectContaining({ team_slug: teamName }))
.mockResolvedValue(
// @ts-ignore as we don't need the full type
data: members.map((m) => {
members.map((m) => {
return { login: m };
}),
});
);
};

test("should call different teams", async () => {
Expand All @@ -76,6 +79,6 @@ describe("Pull Request API Tests", () => {
expect(team3).toEqual(["qwerty", "dvorak"]);
}

expect(client.rest.teams.listMembersInOrg).toHaveBeenCalledTimes(3);
expect(client.paginate).toHaveBeenCalledTimes(3);
});
});

0 comments on commit 064f0e5

Please sign in to comment.