UNPKG

@sketch-hq/sketch-assistant-utils

Version:

Utility functions and types for Sketch Assistants.

143 lines (142 loc) 4.92 kB
"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", }, ] `); }); });