UNPKG

1.97 kBJavaScriptView Raw
1/* global it, describe, beforeEach */
2
3const assert = require('assert');
4
5const Linter = require('../linter');
6
7function createResolver(rule) {
8 return {
9 resolveRule: () => Promise.resolve(rule)
10 };
11}
12
13function expectEqual(a, b) {
14 assert.deepStrictEqual(a, b);
15}
16
17
18function verify(ruleName, rule, testCases) {
19 const linterConfig = {
20 rules: { [ruleName]: 2 }
21 };
22
23 describe(`rules/${ruleName}`, function() {
24
25 let linter;
26
27 beforeEach(function() {
28 linter = new Linter({
29 resolver: createResolver(rule)
30 });
31 });
32
33
34 describe('should lint valid', function() {
35
36 testCases.valid.forEach(({ moddleElement }, idx) => (
37
38 it(`test case #${idx + 1}`, function() {
39 return (
40 Promise.resolve(moddleElement)
41 .then(moddleRoot => {
42 return linter.lint(moddleRoot.root, linterConfig);
43 })
44 .then(lintResults => {
45 expectEqual(lintResults, {});
46 })
47 );
48 })
49
50 ));
51
52 });
53
54
55 describe('should lint invalid', function() {
56
57 testCases.invalid.forEach(({ moddleElement, report }, idx) => (
58
59 it(`test case #${idx}`, function() {
60
61 if (!Array.isArray(report)) {
62 report = [
63 report
64 ];
65 }
66
67 const expectedResults = report.map(report => {
68 return {
69 ...report,
70 category: 'error'
71 };
72 });
73
74 const expectedLintResults = {
75 [ruleName]: expectedResults
76 };
77
78 return (
79 Promise.resolve(moddleElement)
80 .then(moddleRoot => {
81 return linter.lint(moddleRoot.root, linterConfig);
82 })
83 .then(lintResults => {
84 expectEqual(lintResults, expectedLintResults);
85 })
86 );
87 })
88
89 ));
90
91 });
92
93 });
94
95}
96
97
98module.exports = {
99 verify
100};
\No newline at end of file