1 | 'use strict';
|
2 |
|
3 | const {
|
4 | getDocsUrl,
|
5 | hasExpressions,
|
6 | isDescribe,
|
7 | isTestCase,
|
8 | isTemplateLiteral,
|
9 | isString,
|
10 | getStringValue,
|
11 | } = require('./util');
|
12 |
|
13 | const errorMessages = {
|
14 | describe: 'describe should not have an empty title',
|
15 | test: 'test should not have an empty title',
|
16 | };
|
17 |
|
18 | module.exports = {
|
19 | meta: {
|
20 | docs: {
|
21 | url: getDocsUrl(__filename),
|
22 | },
|
23 | },
|
24 | create(context) {
|
25 | return {
|
26 | CallExpression(node) {
|
27 | const is = {
|
28 | describe: isDescribe(node),
|
29 | testCase: isTestCase(node),
|
30 | };
|
31 | if (!is.describe && !is.testCase) {
|
32 | return;
|
33 | }
|
34 | const [firstArgument] = node.arguments;
|
35 | if (!isString(firstArgument)) {
|
36 | return;
|
37 | }
|
38 | if (isTemplateLiteral(firstArgument) && hasExpressions(firstArgument)) {
|
39 | return;
|
40 | }
|
41 | if (getStringValue(firstArgument) === '') {
|
42 | const message = is.describe
|
43 | ? errorMessages.describe
|
44 | : errorMessages.test;
|
45 | context.report({
|
46 | message,
|
47 | node,
|
48 | });
|
49 | }
|
50 | },
|
51 | };
|
52 | },
|
53 | errorMessages,
|
54 | };
|