forked from maplibre/maplibre-gl-js-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
plugins.test.js
43 lines (41 loc) · 1.44 KB
/
plugins.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import test from 'tape';
import fs from 'fs';
import categories from '../docs/data/plugins.json';
function isUrl(value) {
const regex = /^(https?:\/\/)?[\w,%-\\.]+\/?$/;
return regex.test(value);
}
Object.keys(categories).forEach((category) => {
test(`Plugin category: ${category}`, (t) => {
t.equal(
category[0],
category[0].toUpperCase(),
'category name starts with uppercase letter'
);
t.end();
});
const plugins = categories[category];
Object.keys(plugins).forEach((plugin) => {
test(`Plugin: ${plugin}`, (t) => {
const meta = plugins[plugin];
t.equal(typeof plugin, 'string');
t.ok(meta.description, `${plugin} has \`description\``);
t.ok(
meta.description.endsWith('.'),
`${plugin} \`description\` ends with period`
);
t.equal(
meta.description[0],
meta.description[0].toUpperCase(),
`${plugin} \`description\` starts with uppercase letter`
);
t.ok(meta.website, `${plugin} has \`website\``);
t.ok(isUrl(meta.website), `${plugin} \`website\` is a url`);
if (meta.example) {
const path = `./docs/pages/example/${meta.example}.md`;
t.ok(fs.existsSync(path), `example ${path} exists`);
}
t.end();
});
});
});