Skip to content

Commit c9a35fa

Browse files
committed
test(stack/storage): updates dependencies and add missing tests
1 parent 471a33a commit c9a35fa

File tree

4 files changed

+186
-7
lines changed

4 files changed

+186
-7
lines changed

packages/stack/storage/package.json

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,18 @@
3737
"_typecheck": "npm run solo -- typecheck",
3838
"ci": "npm run qa",
3939
"clean": "npm run reset",
40-
"lint": "eslint src/",
40+
"lint": "eslint src/ test/",
4141
"qa": "npm-run-all lint _typecheck _build",
4242
"reset": "npx rimraf dist embark-*.tgz package",
43-
"solo": "embark-solo"
43+
"solo": "embark-solo",
44+
"test": "jest"
4445
},
4546
"eslintConfig": {
46-
"extends": "../../../.eslintrc.json"
47+
"extends": [
48+
"../../../.eslintrc.json",
49+
"plugin:jest/recommended",
50+
"plugin:jest/style"
51+
]
4752
},
4853
"dependencies": {
4954
"@babel/runtime-corejs3": "7.8.4",
@@ -55,14 +60,34 @@
5560
"shelljs": "0.8.3"
5661
},
5762
"devDependencies": {
63+
"@babel/core": "7.8.3",
64+
"babel-jest": "25.1.0",
5865
"embark-solo": "^5.2.3",
66+
"embark-testing": "5.3.0-nightly.6",
5967
"eslint": "6.8.0",
68+
"eslint-plugin-jest": "22.5.1",
6069
"npm-run-all": "4.1.5",
61-
"rimraf": "3.0.0"
70+
"rimraf": "3.0.0",
71+
"sinon": "7.4.2"
6272
},
6373
"engines": {
6474
"node": ">=10.17.0",
6575
"npm": ">=6.11.3",
6676
"yarn": ">=1.19.1"
77+
},
78+
"jest": {
79+
"collectCoverage": true,
80+
"testEnvironment": "node",
81+
"testMatch": [
82+
"**/test/**/*.js"
83+
],
84+
"transform": {
85+
"\\.(js|ts)$": [
86+
"babel-jest",
87+
{
88+
"rootMode": "upward"
89+
}
90+
]
91+
}
6792
}
6893
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import sinon from 'sinon';
2+
import assert from 'assert';
3+
import { fakeEmbark } from 'embark-testing';
4+
import Storage from '../src';
5+
6+
describe('stack/storage', () => {
7+
8+
let storage, embark;
9+
10+
beforeEach(() => {
11+
const testBed = fakeEmbark({
12+
storageConfig: {
13+
dappConnection: {
14+
foo: 'bar'
15+
}
16+
},
17+
embarkConfig: {
18+
generationDir: 'foo'
19+
}
20+
});
21+
22+
embark = testBed.embark;
23+
storage = new Storage(embark, { plugins: testBed.plugins });
24+
});
25+
26+
afterEach(() => {
27+
embark.teardown();
28+
sinon.restore();
29+
});
30+
31+
32+
describe('instantiation', () => {
33+
34+
it('should register storage:node:register command handler', () => {
35+
storage.events.assert.commandHandlerRegistered('storage:node:register');
36+
});
37+
38+
it('should register storage:node:start command handler', () => {
39+
storage.events.assert.commandHandlerRegistered('storage:node:start');
40+
});
41+
42+
it('should register storage:upload:register command handler', () => {
43+
storage.events.assert.commandHandlerRegistered('storage:upload:register');
44+
});
45+
46+
it('should register storage:upload command handler', () => {
47+
storage.events.assert.commandHandlerRegistered('storage:upload');
48+
});
49+
});
50+
51+
it('should register a node', () => {
52+
53+
const startFunction = sinon.fake();
54+
55+
embark.events.request('storage:node:register', 'testNode', startFunction);
56+
assert(storage.storageNodes['testNode']);
57+
assert.equal(storage.storageNodes['testNode'], startFunction);
58+
});
59+
60+
it('should start registered node', done => {
61+
62+
const startFunction = sinon.spy(cb => cb());
63+
64+
const storageConfig = {
65+
enabled: true,
66+
upload: {
67+
provider: 'testProvider'
68+
}
69+
};
70+
71+
embark.events.request('storage:node:register', 'testProvider', startFunction);
72+
embark.events.request('storage:node:start', storageConfig, () => {
73+
assert(startFunction.calledOnce);
74+
done();
75+
});
76+
});
77+
78+
it('should not start node if storage is disabled', done => {
79+
80+
const startFunction = sinon.spy(cb => cb());
81+
82+
const storageConfig = {
83+
enabled: false,
84+
upload: {
85+
provider: 'testProvider'
86+
}
87+
};
88+
89+
embark.events.request('storage:node:register', 'testProvider', startFunction);
90+
embark.events.request('storage:node:start', storageConfig, () => {
91+
assert(!startFunction.calledOnce);
92+
done();
93+
});
94+
});
95+
96+
it('should register an upload node', () => {
97+
98+
const uploadFn = sinon.fake();
99+
100+
embark.events.request('storage:upload:register', 'testNode', uploadFn);
101+
assert(storage.uploadNodes['testNode']);
102+
assert.equal(storage.uploadNodes['testNode'], uploadFn);
103+
});
104+
105+
it('should upload data using registerd upload function', done => {
106+
107+
const uploadFn = sinon.spy(cb => cb());
108+
109+
embark.events.request('storage:upload:register', 'testNode', uploadFn);
110+
embark.events.request('storage:upload', 'testNode', () => {
111+
assert(uploadFn.calledOnce);
112+
done();
113+
});
114+
});
115+
116+
it('should register action for pipeline:generateAll:before', done => {
117+
const pipelineRegisterHandler = sinon.spy((params, cb) => cb());
118+
embark.events.setCommandHandler('pipeline:register', pipelineRegisterHandler);
119+
embark.plugins.runActionsForEvent('pipeline:generateAll:before', () => {
120+
assert(pipelineRegisterHandler.calledOnce);
121+
done();
122+
});
123+
});
124+
});
125+

packages/stack/storage/tsconfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
},
1919
{
2020
"path": "../../core/utils"
21+
},
22+
{
23+
"path": "../../utils/testing"
2124
}
2225
]
2326
}

yarn.lock

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,27 @@
4141
invariant "^2.2.4"
4242
semver "^5.5.0"
4343

44+
45+
version "7.8.3"
46+
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941"
47+
integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==
48+
dependencies:
49+
"@babel/code-frame" "^7.8.3"
50+
"@babel/generator" "^7.8.3"
51+
"@babel/helpers" "^7.8.3"
52+
"@babel/parser" "^7.8.3"
53+
"@babel/template" "^7.8.3"
54+
"@babel/traverse" "^7.8.3"
55+
"@babel/types" "^7.8.3"
56+
convert-source-map "^1.7.0"
57+
debug "^4.1.0"
58+
gensync "^1.0.0-beta.1"
59+
json5 "^2.1.0"
60+
lodash "^4.17.13"
61+
resolve "^1.3.2"
62+
semver "^5.4.1"
63+
source-map "^0.5.0"
64+
4465
4566
version "7.8.4"
4667
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e"
@@ -93,7 +114,7 @@
93114
lodash "^4.17.13"
94115
source-map "^0.5.0"
95116

96-
"@babel/generator@^7.8.4":
117+
"@babel/generator@^7.8.3", "@babel/generator@^7.8.4":
97118
version "7.8.7"
98119
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7"
99120
integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==
@@ -339,7 +360,7 @@
339360
"@babel/traverse" "^7.8.3"
340361
"@babel/types" "^7.8.3"
341362

342-
"@babel/helpers@^7.8.4":
363+
"@babel/helpers@^7.8.3", "@babel/helpers@^7.8.4":
343364
version "7.8.4"
344365
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73"
345366
integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==
@@ -371,7 +392,7 @@
371392
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.6.tgz#ba5c9910cddb77685a008e3c587af8d27b67962c"
372393
integrity sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==
373394

374-
"@babel/parser@^7.8.4":
395+
"@babel/parser@^7.8.3", "@babel/parser@^7.8.4":
375396
version "7.8.7"
376397
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a"
377398
integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==
@@ -8948,6 +8969,11 @@ eslint-plugin-import@~2.2.0:
89488969
minimatch "^3.0.3"
89498970
pkg-up "^1.0.0"
89508971

8972+
8973+
version "22.5.1"
8974+
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.5.1.tgz#a31dfe9f9513c6af7c17ece4c65535a1370f060b"
8975+
integrity sha512-c3WjZR/HBoi4GedJRwo2OGHa8Pzo1EbSVwQ2HFzJ+4t2OoYM7Alx646EH/aaxZ+9eGcPiq0FT0UGkRuFFx2FHg==
8976+
89518977
89528978
version "23.8.1"
89538979
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.1.tgz#247025e8a51b3a25a4cc41166369b0bfb4db83b7"

0 commit comments

Comments
 (0)