1 |
|
2 |
|
3 | const assert = require('assert');
|
4 |
|
5 | const Linter = require('../linter');
|
6 |
|
7 | function createResolver(rule) {
|
8 | return {
|
9 | resolveRule: () => Promise.resolve(rule)
|
10 | };
|
11 | }
|
12 |
|
13 | function expectEqual(a, b) {
|
14 | assert.deepStrictEqual(a, b);
|
15 | }
|
16 |
|
17 |
|
18 | function 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 |
|
98 | module.exports = {
|
99 | verify
|
100 | }; |
\ | No newline at end of file |