63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { BranchService } from "../../../src/mutator/branch/branches";
|
|
import type { GraphQLClient } from "../../../src/mutator/branch/client";
|
|
|
|
const fakeClient = { execute: async () => ({}) } as unknown as GraphQLClient;
|
|
|
|
describe("BranchService.filterBranches", () => {
|
|
const service = new BranchService(fakeClient, "owner", "repo");
|
|
|
|
test("returns all branches when none match exclude patterns", () => {
|
|
const branches = [
|
|
{ name: "main", headOid: "abc" },
|
|
{ name: "develop", headOid: "def" },
|
|
{ name: "feature/test", headOid: "ghi" },
|
|
];
|
|
expect(service.filterBranches(branches)).toEqual(branches);
|
|
});
|
|
|
|
test("filters out dependabot branches", () => {
|
|
const branches = [
|
|
{ name: "main", headOid: "abc" },
|
|
{ name: "dependabot/npm/express-4.18.0", headOid: "def" },
|
|
{ name: "dependabot/pip/requests", headOid: "ghi" },
|
|
];
|
|
expect(service.filterBranches(branches)).toEqual([{ name: "main", headOid: "abc" }]);
|
|
});
|
|
|
|
test("filters out copilot branches", () => {
|
|
const branches = [
|
|
{ name: "main", headOid: "abc" },
|
|
{ name: "copilot/github-copilot-auto", headOid: "def" },
|
|
{ name: "copilot/initialize-github-copilot", headOid: "ghi" },
|
|
];
|
|
expect(service.filterBranches(branches)).toEqual([{ name: "main", headOid: "abc" }]);
|
|
});
|
|
|
|
test("does not filter plain string containing 'dependabot' outside prefix", () => {
|
|
const branches = [{ name: "my-dependabot-wrapper", headOid: "abc" }];
|
|
expect(service.filterBranches(branches)).toEqual(branches);
|
|
});
|
|
|
|
test("filters using extra exclude prefixes", () => {
|
|
const branches = [
|
|
{ name: "main", headOid: "abc" },
|
|
{ name: "release/v1.0", headOid: "def" },
|
|
];
|
|
expect(service.filterBranches(branches, ["release/"])).toEqual([{ name: "main", headOid: "abc" }]);
|
|
});
|
|
|
|
test("supports combined default and extra patterns", () => {
|
|
const branches = [
|
|
{ name: "main", headOid: "abc" },
|
|
{ name: "dependabot/npm/express", headOid: "def" },
|
|
{ name: "release/v1.0", headOid: "ghi" },
|
|
];
|
|
expect(service.filterBranches(branches, ["release/"])).toEqual([{ name: "main", headOid: "abc" }]);
|
|
});
|
|
|
|
test("empty branches returns empty array", () => {
|
|
expect(service.filterBranches([])).toEqual([]);
|
|
});
|
|
}); |