@sketch-hq/sketch-assistant-utils
Version:
Utility functions and types for Sketch Assistants.
143 lines (142 loc) • 4.92 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
const test_helpers_1 = require("../../test-helpers");
const sketch_assistant_types_1 = require("@sketch-hq/sketch-assistant-types");
describe('getRuleConfig', () => {
test('can retrieve rule configuration', () => {
expect(__1.getRuleConfig(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true },
},
}), 'foo')).toMatchInlineSnapshot(`
Object {
"active": true,
}
`);
});
});
describe('isRuleConfigured', () => {
test('returns true for a configured rule', () => {
expect(__1.isRuleConfigured(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true },
},
}), 'foo')).toBe(true);
});
test('returns false for an un-configured rule', () => {
expect(__1.isRuleConfigured(test_helpers_1.createAssistantConfig(), 'foo')).toBe(false);
});
});
describe('getRuleOption', () => {
test('returns option value', () => {
expect(__1.getRuleOption(test_helpers_1.createAssistantConfig({
rules: {
foo: {
active: true,
option: 1,
},
},
}), 'foo', 'option')).toBe(1);
});
test('returns null for missing option', () => {
expect(__1.getRuleOption(test_helpers_1.createAssistantConfig({
rules: {
foo: {
active: true,
option: 1,
},
},
}), 'foo', 'missing')).toBe(null);
});
});
describe('isRuleActive', () => {
test('returns true for activated rule', () => {
expect(__1.isRuleActive(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true },
},
}), 'foo')).toBe(true);
});
test('returns false for de-activated rule', () => {
expect(__1.isRuleActive(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: false },
},
}), 'foo')).toBe(false);
});
test('returns false for un-configured rule', () => {
expect(__1.isRuleActive(test_helpers_1.createAssistantConfig(), 'foo')).toBe(false);
});
});
describe('getRuleSeverity', () => {
test('returns `error` severity level when not specified anywhere', () => {
expect(__1.getRuleSeverity(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true },
},
}), 'foo')).toBe(sketch_assistant_types_1.ViolationSeverity.error);
});
test('falls back to configs defaultSeverity if not set in rule', () => {
expect(__1.getRuleSeverity(test_helpers_1.createAssistantConfig({
defaultSeverity: sketch_assistant_types_1.ViolationSeverity.warn,
rules: {
foo: { active: true },
},
}), 'foo')).toBe(sketch_assistant_types_1.ViolationSeverity.warn);
});
test('can be set in rule', () => {
expect(__1.getRuleSeverity(test_helpers_1.createAssistantConfig({
defaultSeverity: sketch_assistant_types_1.ViolationSeverity.warn,
rules: {
foo: { active: true, severity: sketch_assistant_types_1.ViolationSeverity.info },
},
}), 'foo')).toBe(sketch_assistant_types_1.ViolationSeverity.info);
});
});
describe('isRuleConfigValid', () => {
test('returns true for a valid config', () => {
expect(__1.isRuleConfigValid(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true, option: 'bar' },
},
}), test_helpers_1.createRule({
name: 'foo',
getOptions: (helpers) => [
helpers.stringOption({
name: 'option',
title: '',
description: '',
}),
],
}))).toBe(true);
});
test('returns an error for an invalid config', () => {
expect(__1.isRuleConfigValid(test_helpers_1.createAssistantConfig({
rules: {
foo: { active: true, option: 1 },
},
}), test_helpers_1.createRule({
name: 'foo',
getOptions: (helpers) => [
helpers.stringOption({
name: 'option',
title: '',
description: '',
}),
],
}))).toMatchInlineSnapshot(`
Array [
Object {
"instancePath": "/option",
"keyword": "type",
"message": "must be string",
"params": Object {
"type": "string",
},
"schemaPath": "#/properties/option/type",
},
]
`);
});
});