Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mololab
GitHub Repository: mololab/json-translator
Path: blob/master/src/test/core.spec.ts
235 views
1
import 'openai/shims/node';
2
import { getFile, getRootFolder, saveFilePublic } from '../core/core';
3
import * as fs from 'fs/promises';
4
import * as appConsole from '../utils/console';
5
import { safeValueTransition } from '../modules/helpers';
6
7
jest.mock('fs/promises');
8
9
declare global {
10
var totalTranslation: number;
11
var totalTranslated: number;
12
var skipInCache: number;
13
var proxyList: string[];
14
var proxyIndex: number;
15
}
16
17
describe(`CORE`, () => {
18
test('sanity check for test environment', () => {
19
expect(true).toBeTruthy();
20
});
21
22
it(`should get defined file`, async () => {
23
// arrange
24
const path = 'files/en.json';
25
const expected_output = {
26
login: {
27
title: 'Login',
28
email: 'Please, enter your email',
29
failure: 'Failed',
30
},
31
};
32
33
jest.spyOn(fs, 'readFile').mockResolvedValue(expected_output as any);
34
35
// act
36
const output = await getFile(path);
37
38
// assert
39
expect(output).toMatchObject(expected_output);
40
});
41
42
it(`should not get undefined file`, async () => {
43
// arrange
44
const path = 'files/en.json';
45
46
jest.spyOn(fs, 'readFile').mockRejectedValue(undefined);
47
48
// act
49
const output = await getFile(path);
50
51
// assert
52
expect(output).toBeUndefined();
53
});
54
55
it('should get root folder', () => {
56
// arrange
57
const test_cases = [
58
{
59
path: 'C:/PACKAGES/js/json-translator/test/files/en.json',
60
root_folder: 'C:/PACKAGES/js/json-translator/test/files',
61
},
62
{
63
path: 'files/en.json',
64
root_folder: 'files',
65
},
66
{
67
path: 'en.json',
68
root_folder: './',
69
},
70
];
71
72
// act & assert
73
test_cases.forEach(test_case => {
74
const root_folder = getRootFolder(test_case.path);
75
expect(root_folder).toStrictEqual(test_case.root_folder);
76
});
77
});
78
79
it('should save file (successful case)', async () => {
80
// arrange
81
const path = 'files';
82
const data = {};
83
jest.spyOn(fs, 'writeFile').mockResolvedValue();
84
jest.spyOn(appConsole, 'error').mockReturnValue();
85
86
// act
87
await saveFilePublic(path, data);
88
89
// assert
90
expect(appConsole.error).not.toHaveBeenCalled();
91
});
92
93
it('should not save file (unsuccessful case)', async () => {
94
// arrange
95
const path = 'files';
96
const data = {};
97
jest.spyOn(fs, 'writeFile').mockRejectedValue(``);
98
jest.spyOn(appConsole, 'error').mockReturnValue();
99
100
// act
101
await saveFilePublic(path, data);
102
103
// assert
104
expect(appConsole.error).toHaveBeenCalled();
105
});
106
107
it('should transit value to a safe form', () => {
108
// arrange
109
const test_cases = [
110
{
111
value: '',
112
expected_safe_value: '--',
113
},
114
{
115
value: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in.`,
116
expected_safe_value:
117
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvi',
118
},
119
];
120
121
// act & assert
122
test_cases.forEach(test_case => {
123
const safe_form = safeValueTransition(test_case.value);
124
expect(safe_form).toStrictEqual(test_case.expected_safe_value);
125
});
126
});
127
});
128
129