-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.js
66 lines (55 loc) · 1.55 KB
/
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import fs from 'node:fs';
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import React from 'react';
import chalk from 'chalk';
import test from 'ava';
import {render} from 'ink-testing-library';
import {fdir as Fdir} from 'fdir';
import App from './source/app.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const sourcesPath = path.join(__dirname, 'source', 'sentences');
const files = new Fdir()
.filter((path, _isDirectory) => path.endsWith('.json'))
.withFullPaths()
.crawl(sourcesPath)
.sync();
test('shows game name', t => {
const {lastFrame} = render(<App />);
t.true(lastFrame().includes('A'));
});
test('shows info', t => {
const {lastFrame} = render(<App />);
t.truthy(chalk);
t.true(lastFrame().includes('A'));
});
test('should not have sentences less than 330 chars', t => {
const items = [];
for (const file of files)
for (const sentence of JSON.parse(fs.readFileSync(file, 'utf8'))
.sentences) {
if (sentence.length < 330) {
items.push(file);
}
}
t.is(items.length, 0);
});
test('should not have sentences starting or ending with spaces', t => {
const items = [];
for (const file of files)
for (const sentence of JSON.parse(fs.readFileSync(file, 'utf8'))
.sentences) {
if (sentence.startsWith(' ') || sentence.endsWith(' ')) {
items.push({file, sentence});
}
}
// eslint-disable-next-line ava/assertion-arguments
t.is(
items.length,
0,
items
.map(item => `File: ${item.file}; sentence: ${item.sentence}`)
.join('\n'),
);
});