Skip to content

Commit da46a21

Browse files
test: ensure recommended meta aligns with configs
1 parent 0114479 commit da46a21

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

tests/package.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,38 @@ describe('package', () => {
4545
}
4646
}
4747
});
48+
49+
it('has rules flagged according to their configs', () => {
50+
if (!plugin.configs) {
51+
expect.fail('No configs found.');
52+
}
53+
54+
const namespace = 'rxjs-x';
55+
56+
for (const [ruleName, rule] of Object.entries(plugin.rules)) {
57+
const fullRuleName = `${namespace}/${ruleName}`;
58+
const ruleRec = rule.meta.docs?.recommended;
59+
60+
if (!ruleRec) {
61+
// Rule is not part of any config.
62+
expect(plugin.configs.recommended.rules).not.toHaveProperty(fullRuleName);
63+
expect(plugin.configs.strict.rules).not.toHaveProperty(fullRuleName);
64+
} else if (typeof ruleRec === 'string') {
65+
// Rule is part of a single config.
66+
if (ruleRec === 'recommended') {
67+
expect(plugin.configs.recommended.rules).toHaveProperty(fullRuleName);
68+
} else if (ruleRec === 'strict') {
69+
expect(plugin.configs.strict.rules).toHaveProperty(fullRuleName);
70+
} else {
71+
expect.fail(`Invalid recommended value for rule ${fullRuleName}: ${ruleRec}`);
72+
}
73+
} else {
74+
// Rule is part of several configs.
75+
if (ruleRec.recommended) {
76+
expect(plugin.configs.recommended.rules).toHaveProperty(fullRuleName);
77+
}
78+
expect(plugin.configs.strict.rules).toHaveProperty(fullRuleName);
79+
}
80+
}
81+
});
4882
});

0 commit comments

Comments
 (0)