0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-23 22:27:34 -05:00
verdaccio/test/unit/modules/notifications/notify.spec.ts
Juan Picado a8a992cfb6
chore: upgrade jest 29 (#3566)
* chore: upgrade jest 29

* Update api.spec.ts
2023-01-19 00:09:24 +01:00

86 lines
2.9 KiB
TypeScript

import { setup } from '../../../../src/lib/logger';
import { notify } from '../../../../src/lib/notify';
import { notifyRequest } from '../../../../src/lib/notify/notify-request';
import { parseConfigFile } from '../../../../src/lib/utils';
import { parseConfigurationFile } from '../../__helper';
setup([]);
jest.mock('./../../../../src/lib/notify/notify-request', () => ({
notifyRequest: jest.fn((options, content) => Promise.resolve([options, content])),
}));
const parseConfigurationNotifyFile = (name) => {
return parseConfigurationFile(`notify/${name}`);
};
const singleNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.notify'));
const singleHeaderNotificationConfig = parseConfigFile(
parseConfigurationNotifyFile('single.header.notify')
);
const packagePatternNotificationConfig = parseConfigFile(
parseConfigurationNotifyFile('single.packagePattern.notify')
);
const multiNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('multiple.notify'));
describe('Notifications:: Notify', () => {
beforeEach(() => {
jest.clearAllMocks();
});
// FUTURE: we should add some sort of health check of all props, (not implemented yet)
test('should not fails if config is not provided', async () => {
// @ts-ignore
await notify({}, {});
expect(notifyRequest).toHaveBeenCalledTimes(0);
});
test('should send notification', async () => {
const name = 'package';
// @ts-ignore
const response = await notify({ name }, singleNotificationConfig, { name: 'foo' }, 'bar');
const [options, content] = response;
expect(options.headers).toBeDefined();
expect(options.url).toBeDefined();
expect(options.body).toBeDefined();
expect(content).toMatch(name);
expect(response).toBeTruthy();
expect(notifyRequest).toHaveBeenCalledTimes(1);
});
test('should send single header notification', async () => {
// @ts-ignore
await notify({}, singleHeaderNotificationConfig, { name: 'foo' }, 'bar');
expect(notifyRequest).toHaveBeenCalledTimes(1);
});
test('should send multiple notification', async () => {
const name = 'package';
// @ts-ignore
await notify({ name }, multiNotificationConfig, { name: 'foo' }, 'bar');
expect(notifyRequest).toHaveBeenCalled();
expect(notifyRequest).toHaveBeenCalledTimes(3);
});
describe('packagePatternFlags', () => {
test('should send single notification with packagePatternFlags', async () => {
const name = 'package';
// @ts-ignore
await notify({ name }, packagePatternNotificationConfig, { name: 'foo' }, 'bar');
expect(notifyRequest).toHaveBeenCalledTimes(1);
});
test('should not match on send single notification with packagePatternFlags', async () => {
const name = 'no-mach-name';
// @ts-ignore
await notify({ name }, packagePatternNotificationConfig, { name: 'foo' }, 'bar');
expect(notifyRequest).toHaveBeenCalledTimes(0);
});
});
});