import {Issue} from '../src/classes/issue'; import {IIssuesProcessorOptions} from '../src/interfaces/issues-processor-options'; import {IssuesProcessorMock} from './classes/issues-processor-mock'; import {DefaultProcessorOptions} from './constants/default-processor-options'; import {generateIssue} from './functions/generate-issue'; import {alwaysFalseStateMock} from './classes/state-mock'; interface ITestData { isPullRequest: boolean; milestone: string; name: string; shouldStale: boolean; } describe('milestones options', (): void => { let opts: IIssuesProcessorOptions; let testIssueList: Issue[]; let processor: IssuesProcessorMock; const setTestIssueList = ( isPullRequest: boolean, milestone: string | undefined ) => { testIssueList = [ generateIssue( opts, 1, 'My first issue', '2020-01-01T17:00:00Z', '2020-01-01T17:00:00Z', false, isPullRequest, undefined, undefined, undefined, milestone ) ]; }; const setProcessor = () => { processor = new IssuesProcessorMock( opts, alwaysFalseStateMock, async p => (p === 1 ? testIssueList : []), async () => [], async () => new Date().toDateString() ); }; beforeEach((): void => { opts = {...DefaultProcessorOptions}; }); describe('when all the issues and pull requests milestones should not exempt', (): void => { beforeEach((): void => { opts.exemptAllMilestones = false; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones are not configured to exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = undefined; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the issues milestones should not exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = false; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the issues milestones should exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = true; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones are not configured to exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = undefined; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones should not exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = false; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones should exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = true; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); }); describe('when all the issues and pull requests milestones should exempt', (): void => { beforeEach((): void => { opts.exemptAllMilestones = true; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones are not configured to exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = undefined; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the issues milestones should not exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = false; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${true} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${true} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${true} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the issues milestones should exempt', (): void => { beforeEach((): void => { opts.exemptAllIssueMilestones = true; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones are not configured to exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = undefined; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones should not exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = false; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${true} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${true} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${true} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); describe('when all the pull requests milestones should exempt', (): void => { beforeEach((): void => { opts.exemptAllPrMilestones = true; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues and pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); describe('when all the issues and pull requests milestones should exempt some milestones', (): void => { beforeEach((): void => { opts.exemptMilestones = 'dummy-milestone1, dummy-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); describe('when all the issues milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptIssueMilestones = 'dummy-issue-milestone1, dummy-issue-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-issue-milestone2'} | ${'the issue does have a milestone matching the specific issue exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-issue-milestone2'} | ${'the PR does have a milestone matching the specific issue exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); describe('when all the pull requests milestones should exempt a specific milestone', (): void => { beforeEach((): void => { opts.exemptPrMilestones = 'dummy-pull-request-milestone1, dummy-pull-request-milestone2'; }); describe.each` isPullRequest | milestone | name | shouldStale ${false} | ${''} | ${'the issue does not have a milestone'} | ${true} ${false} | ${'dummy-milestone-not-exempted'} | ${'the issue does have a milestone but not matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-pull-request-milestone2'} | ${'the issue does have a milestone matching the specific pull request exempted one'} | ${false} ${false} | ${'dummy-milestone2'} | ${'the issue does have a milestone matching the specific exempted one'} | ${false} ${true} | ${''} | ${'the PR does not have a milestone'} | ${true} ${true} | ${'dummy-milestone-not-exempted'} | ${'the PR does have a milestone but not matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-pull-request-milestone2'} | ${'the PR does have a milestone matching the specific pull request exempted one'} | ${false} ${true} | ${'dummy-milestone2'} | ${'the PR does have a milestone matching the specific exempted one'} | ${false} `( 'when $name', ({isPullRequest, milestone, shouldStale}: ITestData): void => { beforeEach((): void => { setTestIssueList(isPullRequest, milestone); setProcessor(); }); test(`should${ shouldStale ? '' : ' not' } be marked as stale`, async () => { expect.assertions(3); await processor.processIssues(1); expect(processor.staleIssues.length).toStrictEqual( shouldStale ? 1 : 0 ); expect(processor.closedIssues.length).toStrictEqual(0); expect(processor.removedLabelIssues.length).toStrictEqual(0); }); } ); }); }); }); }); });