mirror of
https://github.com/actions/stale.git
synced 2025-12-24 01:18:17 +00:00
* refactor(logs): replace chalk by ansi-styles * test(logs): fix the failing tests due to ansi styles I was not able to disable or mock ansi-styles so instead I found a way to make the tests pass it's not perfect but it's still nice because the logs will keep their trustful colour when running through the tests * refactor(logs): simplify the syntax to colour the logs * chore(rebase): update files due to rebase * refactor(logger): reduce code duplication
194 lines
5.5 KiB
TypeScript
194 lines
5.5 KiB
TypeScript
import {DefaultProcessorOptions} from '../../../__tests__/constants/default-processor-options';
|
|
import {generateIIssue} from '../../../__tests__/functions/generate-iissue';
|
|
import {Issue} from '../issue';
|
|
import {IssueLogger} from './issue-logger';
|
|
import * as core from '@actions/core';
|
|
|
|
describe('IssueLogger', (): void => {
|
|
let issue: Issue;
|
|
let issueLogger: IssueLogger;
|
|
let message: string;
|
|
|
|
let coreWarningSpy: jest.SpyInstance;
|
|
|
|
describe('warning()', (): void => {
|
|
beforeEach((): void => {
|
|
message = 'dummy-message';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 8
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
|
|
coreWarningSpy = jest.spyOn(core, 'warning').mockImplementation();
|
|
});
|
|
|
|
it('should log a warning with the given message and with the issue number as prefix', (): void => {
|
|
expect.assertions(3);
|
|
|
|
issueLogger.warning(message);
|
|
|
|
expect(coreWarningSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('[#8]')
|
|
);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('dummy-message')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('info()', (): void => {
|
|
let coreInfoSpy: jest.SpyInstance;
|
|
|
|
beforeEach((): void => {
|
|
message = 'dummy-message';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 8
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
|
|
coreInfoSpy = jest.spyOn(core, 'info').mockImplementation();
|
|
});
|
|
|
|
it('should log an information with the given message and with the issue number as prefix', (): void => {
|
|
expect.assertions(3);
|
|
|
|
issueLogger.info(message);
|
|
|
|
expect(coreInfoSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreInfoSpy).toHaveBeenCalledWith(expect.stringContaining('[#8]'));
|
|
expect(coreInfoSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('dummy-message')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('error()', (): void => {
|
|
let coreErrorSpy: jest.SpyInstance;
|
|
|
|
beforeEach((): void => {
|
|
message = 'dummy-message';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 8
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
|
|
coreErrorSpy = jest.spyOn(core, 'error').mockImplementation();
|
|
});
|
|
|
|
it('should log an error with the given message and with the issue number as prefix', (): void => {
|
|
expect.assertions(3);
|
|
|
|
issueLogger.error(message);
|
|
|
|
expect(coreErrorSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreErrorSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('[#8]')
|
|
);
|
|
expect(coreErrorSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('dummy-message')
|
|
);
|
|
});
|
|
});
|
|
|
|
it('should prefix the message with the issue number', (): void => {
|
|
expect.assertions(3);
|
|
message = 'dummy-message';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 123
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
coreWarningSpy = jest.spyOn(core, 'warning').mockImplementation();
|
|
|
|
issueLogger.warning(message);
|
|
|
|
expect(coreWarningSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('[#123]')
|
|
);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining('dummy-message')
|
|
);
|
|
});
|
|
|
|
it.each`
|
|
pull_request | replacement
|
|
${{key: 'value'}} | ${'pull request'}
|
|
${{}} | ${'pull request'}
|
|
${null} | ${'issue'}
|
|
${undefined} | ${'issue'}
|
|
`(
|
|
'should replace the special tokens "$$type" with the corresponding type',
|
|
({pull_request, replacement}): void => {
|
|
expect.assertions(3);
|
|
message = 'The $$type will stale! $$type will soon be closed!';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 8,
|
|
pull_request
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
coreWarningSpy = jest.spyOn(core, 'warning').mockImplementation();
|
|
|
|
issueLogger.warning(message);
|
|
|
|
expect(coreWarningSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining(`[#8]`)
|
|
);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining(
|
|
`The ${replacement} will stale! ${replacement} will soon be closed!`
|
|
)
|
|
);
|
|
}
|
|
);
|
|
|
|
it.each`
|
|
pull_request | replacement
|
|
${{key: 'value'}} | ${'Pull request'}
|
|
${{}} | ${'Pull request'}
|
|
${null} | ${'Issue'}
|
|
${undefined} | ${'Issue'}
|
|
`(
|
|
'should replace the special token "$$type" with the corresponding type with first letter as uppercase',
|
|
({pull_request, replacement}): void => {
|
|
expect.assertions(3);
|
|
message = '$$type will stale';
|
|
issue = new Issue(
|
|
DefaultProcessorOptions,
|
|
generateIIssue({
|
|
number: 8,
|
|
pull_request
|
|
})
|
|
);
|
|
issueLogger = new IssueLogger(issue);
|
|
coreWarningSpy = jest.spyOn(core, 'warning').mockImplementation();
|
|
|
|
issueLogger.warning(message);
|
|
|
|
expect(coreWarningSpy).toHaveBeenCalledTimes(1);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining(`[#8]`)
|
|
);
|
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
|
expect.stringContaining(`${replacement} will stale`)
|
|
);
|
|
}
|
|
);
|
|
});
|