-
-
Notifications
You must be signed in to change notification settings - Fork 1k
/
init.test.ts
100 lines (90 loc) · 2.96 KB
/
init.test.ts
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
console.log('######## init.test.js ########');
import sourceMapSupport from 'source-map-support';
sourceMapSupport.install();
import '@babel/polyfill';
import config from './config.ts';
import assert from 'assert';
import {
clearNodeFolder
} from 'broadcast-channel';
// set faker seed
import { faker } from '@faker-js/faker';
faker.seed(123);
// add dev-mode plugin
import { addRxPlugin, overwritable } from '../../plugins/core/index.mjs';
import { RxDBDevModePlugin } from '../../plugins/dev-mode/index.mjs';
import { isDeno, isNode } from '../../plugins/test-utils/index.mjs';
addRxPlugin(RxDBDevModePlugin);
console.log('###### PLATFORM: ######');
if (typeof window !== 'undefined') {
console.log('USER-AGENT: ' + window.navigator.userAgent);
}
console.log('STORAGE: ' + config.storage.name);
if (!isNode) {
console.dir = (d: any) => {
console.log(JSON.stringify(d));
};
} else {
/**
* exit with non-zero on unhandledRejection
*/
process.on('unhandledRejection', async function (error, p) {
console.log('init.test.js: unhandledRejection');
// use log and error because some CI terminals do not show errors.
try {
console.dir(await p);
} catch (err) {
console.log((error as any).stack);
console.dir(error);
console.log('------- COULD NOT AWAIT p');
process.exit(5);
}
console.dir((error as any).stack);
console.error(error);
console.dir(error);
console.log('------- END OF unhandledRejection debug logs');
process.exit(5);
});
// log version
console.log('node -v :: ');
console.dir(process.versions.node);
}
describe('init.test.ts', () => {
it('ensure dev-mode is activated', () => {
assert.ok(overwritable.isDevMode());
});
it('init storage', async () => {
if (config.storage.init) {
await config.storage.init();
}
});
it('clear BroadcastChannel tmp folder', async () => {
await clearNodeFolder();
});
it('start test servers', async () => {
if (isNode) {
console.log('START TEST SERVERS');
const { startTestServers } = await import('' + '../helper/test-servers.js' + '');
startTestServers();
} else if (isDeno) {
console.log('START TEST SERVERS');
const { startTestServers } = await import('' + '../helper/test-servers.ts' + '');
startTestServers();
}
});
it('must run in strict mode', () => {
return; // TODO enable this and make it work
/**
* Ensure we run in strict-mode, otherwise some tests
* will not run correctly
* @link https://stackoverflow.com/a/10480227/3443137
*/
const isStrict = (function () {
// @ts-ignore
return !(this as any);
})();
if (!isStrict) {
throw new Error('Strict Mode not enabled');
}
});
});