Skip to content

Commit 416221e

Browse files
authored
Improve tests (#18)
Replaced mocha with jest. Test are split into unit and integration categories. Dropped ESM dependency. Code is now being compiled into CJS
1 parent 399166e commit 416221e

File tree

14 files changed

+7039
-7889
lines changed

14 files changed

+7039
-7889
lines changed

.github/workflows/js_sdk_ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
node-version: ${{ matrix.node-version }}
3333

3434
- run: npm install
35-
- run: npm test
35+
- run: npm run test:unit
3636
env:
3737
CI: true
3838

jest.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
preset: 'ts-jest',
3+
testEnvironment: 'node',
4+
};

package-lock.json

Lines changed: 6819 additions & 7581 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@
55
"main": "./dist/index.js",
66
"typings": "./dist/index.d.ts",
77
"scripts": {
8-
"test": "mocha --timeout 10000 -r esm -r ts-node/register src/**/*.spec.ts",
9-
"build": "tsc && rsync -r src/internal/aqua/*.js dist/internal/aqua",
8+
"test": "jest --watch",
9+
"test:all": "jest",
10+
"test:unit": "jest --testPathPattern=src/__test__/unit",
11+
"test:integration": "jest --testPathPattern=src/__test__/integration",
12+
"build": "tsc",
1013
"build:webpack": "webpack --mode production"
1114
},
1215
"repository": "https://github.com/fluencelabs/fluence-js",
1316
"author": "Fluence Labs",
1417
"license": "Apache-2.0",
1518
"dependencies": {
16-
"@fluencelabs/aquamarine-stepper": "0.4.2",
17-
"@fluencelabs/fluence-network-environment": "1.0.8",
19+
"@fluencelabs/aquamarine-stepper": "0.4.4",
1820
"async": "3.2.0",
1921
"base64-js": "1.3.1",
2022
"bs58": "4.0.1",
@@ -30,25 +32,22 @@
3032
"uuid": "8.3.0"
3133
},
3234
"devDependencies": {
35+
"@babel/core": "^7.12.10",
36+
"@babel/preset-env": "^7.12.11",
37+
"@babel/preset-typescript": "^7.12.7",
3338
"@types/base64-js": "1.2.5",
3439
"@types/bs58": "4.0.1",
35-
"@types/chai": "4.2.11",
36-
"@types/mocha": "7.0.2",
40+
"@types/jest": "^26.0.20",
3741
"@types/uuid": "8.3.0",
3842
"assert": "2.0.0",
39-
"chai": "4.2.0",
40-
"clean-webpack-plugin": "3.0.0",
43+
"babel-jest": "^26.6.3",
44+
"babel-plugin-replace-ts-export-assignment": "0.0.2",
4145
"esm": "^3.2.25",
42-
"html-webpack-plugin": "^3.2.0",
46+
"jest": "^26.6.3",
4347
"libp2p-ts": "https://github.com/ChainSafe/libp2p-ts.git#fca072c9764436ef71f974a211bb1befae432575",
44-
"mocha": "^8.2.1",
45-
"mocha-loader": "^5.1.5",
4648
"text-encoding": "^0.7.0",
49+
"ts-jest": "^26.5.0",
4750
"ts-loader": "7.0.5",
48-
"ts-mocha": "8.0.0",
49-
"typescript": "^3.9.5",
50-
"webpack": "4.43.0",
51-
"webpack-cli": "3.3.11",
52-
"webpack-dev-server": "3.11.0"
51+
"typescript": "^3.9.5"
5352
}
5453
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
import {
2+
addBlueprint,
3+
addProvider,
4+
addScript,
5+
createService,
6+
getBlueprints,
7+
getInterfaces,
8+
getModules,
9+
getProviders,
10+
removeScript,
11+
uploadModule,
12+
} from '../../internal/builtins';
13+
import { ModuleConfig } from '../../internal/moduleConfig';
14+
import { createConnectedClient } from '../util';
15+
16+
const dev2multiaddr = '/dns4/dev.fluence.dev/tcp/19003/wss/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb';
17+
const dev3multiaddr = '/dns4/dev.fluence.dev/tcp/19004/wss/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB';
18+
19+
const dev2peerId = '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9';
20+
21+
describe('Builtins usage suite', () => {
22+
it('get_modules', async function () {
23+
const client = await createConnectedClient(dev2multiaddr);
24+
25+
let modulesList = await getModules(client);
26+
27+
expect(modulesList).not.toBeUndefined;
28+
});
29+
30+
it('get_interfaces', async function () {
31+
const client = await createConnectedClient(dev2multiaddr);
32+
33+
let interfaces = await getInterfaces(client);
34+
35+
expect(interfaces).not.toBeUndefined;
36+
});
37+
38+
it('get_blueprints', async function () {
39+
const client = await createConnectedClient(dev2multiaddr);
40+
41+
let bpList = await getBlueprints(client);
42+
43+
expect(bpList).not.toBeUndefined;
44+
});
45+
46+
it('upload_modules', async function () {
47+
const client = await createConnectedClient(dev2multiaddr);
48+
49+
console.log('peerid: ' + client.selfPeerId);
50+
51+
let config: ModuleConfig = {
52+
name: 'test_broken_module',
53+
mem_pages_count: 100,
54+
logger_enabled: true,
55+
wasi: {
56+
envs: { a: 'b' },
57+
preopened_files: ['a', 'b'],
58+
mapped_dirs: { c: 'd' },
59+
},
60+
mounted_binaries: { e: 'f' },
61+
};
62+
63+
let base64 = 'MjNy';
64+
65+
await uploadModule(client, 'test_broken_module', base64, config);
66+
});
67+
68+
it('add_blueprint', async function () {
69+
const client = await createConnectedClient(dev2multiaddr);
70+
71+
let bpId = 'some';
72+
73+
let bpIdReturned = await addBlueprint(client, 'test_broken_blueprint', ['test_broken_module'], bpId);
74+
75+
expect(bpIdReturned).toEqual(bpId);
76+
});
77+
78+
// FIXME:: there is no error on broken blueprint from a node
79+
it.skip('create_service', async function () {
80+
const client = await createConnectedClient(dev2multiaddr);
81+
82+
let serviceId = await createService(client, 'test_broken_blueprint');
83+
84+
// TODO there is no error on broken blueprint from a node
85+
expect(serviceId).not.toBeUndefined;
86+
});
87+
88+
it('add_provider', async function () {
89+
const client = await createConnectedClient(dev2multiaddr);
90+
91+
let key = Math.random().toString(36).substring(7);
92+
let buf = Buffer.from(key);
93+
94+
let r = Math.random().toString(36).substring(7);
95+
await addProvider(client, buf, dev2peerId, r);
96+
97+
let pr = await getProviders(client, buf);
98+
console.log(pr);
99+
console.log(r);
100+
expect(r).toEqual(pr[0][0].service_id);
101+
});
102+
103+
it('add and remove script', async function () {
104+
const client = await createConnectedClient(dev3multiaddr);
105+
106+
console.log('peerid: ' + client.selfPeerId);
107+
108+
let script = `
109+
(seq
110+
(call "${client.relayPeerId}" ("op" "identity") [])
111+
(call "${client.selfPeerId}" ("test" "test1") ["1" "2" "3"] result)
112+
)
113+
`;
114+
115+
let resMakingPromise = new Promise((resolve) => {
116+
client.registerCallback('test', 'test1', (args, _) => {
117+
resolve([...args]);
118+
return {};
119+
});
120+
});
121+
122+
let scriptId = await addScript(client, script);
123+
124+
await resMakingPromise
125+
.then((args) => {
126+
console.log('final!');
127+
expect(args as string[]).toEqual(['1', '2', '3']);
128+
})
129+
.finally(() => {
130+
removeScript(client, scriptId);
131+
});
132+
133+
expect(scriptId).not.toBeUndefined;
134+
});
135+
});

0 commit comments

Comments
 (0)