diff --git a/__tests__/branch.test.ts b/__tests__/branch.test.ts new file mode 100644 index 00000000..b5849017 --- /dev/null +++ b/__tests__/branch.test.ts @@ -0,0 +1,58 @@ +import {checkBranch} from '../src/branch'; +import * as github from '@actions/github'; + +jest.mock('@actions/core'); +jest.mock('@actions/github'); + +describe('checkBranch', () => { + describe('when a single pattern is provided', () => { + beforeEach(() => { + github.context.payload.pull_request!.head = { + ref: 'test/feature/123' + }; + }); + + describe('and the pattern matches the head branch', () => { + it('returns true', () => { + const result = checkBranch(['^test']); + expect(result).toBe(true); + }); + }); + + describe('and the pattern does not match the head branch', () => { + it('returns false', () => { + const result = checkBranch(['^feature/']); + expect(result).toBe(false); + }); + }); + }); + + describe('when multiple patterns are provided', () => { + beforeEach(() => { + github.context.payload.pull_request!.head = { + ref: 'test/feature/123' + }; + }); + + describe('and at least one pattern matches', () => { + it('returns true', () => { + const result = checkBranch(['^test/', '^feature/']); + expect(result).toBe(true); + }); + }); + + describe('and all patterns match', () => { + it('returns true', () => { + const result = checkBranch(['^test/', '/feature/']); + expect(result).toBe(true); + }); + }); + + describe('and no patterns match', () => { + it('returns false', () => { + const result = checkBranch(['^feature/', '/test$']); + expect(result).toBe(false); + }); + }); + }); +});