2022-10-21 16:28:15 +01:00
|
|
|
import { expect } from "chai";
|
|
|
|
import { HookFilter } from '../src/HookFilter';
|
|
|
|
|
|
|
|
const DEFAULT_SET = ['default-allowed', 'default-allowed-but-ignored'];
|
|
|
|
const ENABLED_SET = ['enabled-hook', 'enabled-but-ignored'];
|
|
|
|
|
|
|
|
describe("HookFilter", () => {
|
|
|
|
let filter: HookFilter<string>;
|
2024-11-28 15:04:01 +00:00
|
|
|
|
2022-10-21 16:28:15 +01:00
|
|
|
beforeEach(() => {
|
2023-01-10 17:08:50 +00:00
|
|
|
filter = new HookFilter(ENABLED_SET);
|
2022-10-21 16:28:15 +01:00
|
|
|
});
|
2024-11-28 15:04:01 +00:00
|
|
|
|
2023-01-10 17:08:50 +00:00
|
|
|
describe('shouldSkip', () => {
|
|
|
|
it('should allow a hook named in enabled set', () => {
|
|
|
|
expect(filter.shouldSkip('enabled-hook')).to.be.false;
|
|
|
|
});
|
2024-11-28 15:04:01 +00:00
|
|
|
|
2023-01-10 17:08:50 +00:00
|
|
|
it('should not allow a hook not named in enabled set', () => {
|
|
|
|
expect(filter.shouldSkip('not-enabled-hook')).to.be.true;
|
|
|
|
});
|
2022-10-21 16:28:15 +01:00
|
|
|
});
|
2023-01-10 17:08:50 +00:00
|
|
|
|
|
|
|
describe('convertIgnoredHooksToEnabledHooks', () => {
|
|
|
|
it('should correctly provide a list of default hooks', () => {
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks([], [], DEFAULT_SET)).to.have.members(DEFAULT_SET);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should correctly include default and enabled hooks when ignored hooks is set', () => {
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks(ENABLED_SET, ['my-ignored-hook'], DEFAULT_SET)).to.have.members([
|
|
|
|
...ENABLED_SET, ...DEFAULT_SET
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should deduplicate', () => {
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks(DEFAULT_SET, [], DEFAULT_SET)).to.have.members(DEFAULT_SET);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should correctly exclude ignored hooks', () => {
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks([], [DEFAULT_SET[0]], DEFAULT_SET)).to.not.include([
|
|
|
|
DEFAULT_SET[0]
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle ignored root hooks', () => {
|
|
|
|
const defaultHooks = ['myhook', 'myhook.foo', 'myhook.foo.bar'];
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks([], ['myhook.foo.bar'], defaultHooks)).to.have.members([
|
|
|
|
'myhook', 'myhook.foo'
|
|
|
|
]);
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks([], ['myhook.foo'], defaultHooks)).to.have.members([
|
|
|
|
'myhook'
|
|
|
|
]);
|
|
|
|
expect(HookFilter.convertIgnoredHooksToEnabledHooks([], ['myhook'], defaultHooks)).to.be.empty;
|
|
|
|
});
|
2022-10-21 16:28:15 +01:00
|
|
|
});
|
|
|
|
});
|