Skip to content

Commit 7c3edaa

Browse files
author
Marc-André Rivet
committed
add tests for notifyObserver
1 parent 1a7a470 commit 7c3edaa

File tree

6 files changed

+91
-11
lines changed

6 files changed

+91
-11
lines changed

Diff for: dash-renderer/.babelrc

-6
This file was deleted.

Diff for: dash-renderer/babel.config.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = {
2+
presets: [['@babel/preset-env', {
3+
useBuiltIns: 'usage',
4+
corejs: 3
5+
}], '@babel/preset-react'],
6+
env: {
7+
test: {
8+
plugins: [
9+
'@babel/plugin-transform-modules-commonjs'
10+
]
11+
}
12+
}
13+
};

Diff for: dash-renderer/jest.config.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ module.exports = {
163163
// transform: null,
164164

165165
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
166-
// transformIgnorePatterns: [
167-
// "/node_modules/"
168-
// ],
166+
transformIgnorePatterns: [
167+
"/node_modules/(?!@plotly).+\\.js"
168+
],
169169

170170
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
171171
// unmockedModulePathPatterns: undefined,

Diff for: dash-renderer/package-lock.json

+7-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: dash-renderer/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
},
3737
"devDependencies": {
3838
"@babel/core": "^7.6.0",
39+
"@babel/plugin-transform-modules-commonjs": "^7.6.0",
3940
"@babel/preset-env": "^7.6.0",
4041
"@babel/preset-react": "^7.0.0",
4142
"@plotly/dash-component-plugins": "^1.0.1",
@@ -64,4 +65,4 @@
6465
"webpack-serve": "^3.1.1",
6566
"whatwg-fetch": "^2.0.2"
6667
}
67-
}
68+
}

Diff for: dash-renderer/tests/notifyObservers.test.js

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import { notifyObservers } from "../src/actions";
2+
3+
const WAIT = 1000;
4+
5+
describe('notifyObservers', () => {
6+
const thunk = notifyObservers({
7+
id: 'id',
8+
props: {},
9+
undefined
10+
});
11+
12+
it('executes if app is ready', async () => {
13+
let done = false;
14+
thunk(
15+
() => { },
16+
() => ({
17+
graphs: {
18+
InputGraph: {
19+
hasNode: () => false,
20+
dependenciesOf: () => [],
21+
dependantsOf: () => [],
22+
overallOrder: () => 0
23+
}
24+
},
25+
isAppReady: true,
26+
requestQueue: []
27+
})
28+
).then(() => { done = true; });
29+
30+
await new Promise(r => setTimeout(r, 0));
31+
expect(done).toEqual(true);
32+
});
33+
34+
it('waits on app to be ready', async () => {
35+
let resolve;
36+
const isAppReady = new Promise(r => {
37+
resolve = r;
38+
});
39+
40+
let done = false;
41+
thunk(
42+
() => { },
43+
() => ({
44+
graphs: {
45+
InputGraph: {
46+
hasNode: () => false,
47+
dependenciesOf: () => [],
48+
dependantsOf: () => [],
49+
overallOrder: () => 0
50+
}
51+
},
52+
isAppReady,
53+
requestQueue: []
54+
})
55+
).then(() => { done = true; });
56+
57+
await new Promise(r => setTimeout(r, WAIT));
58+
expect(done).toEqual(false);
59+
60+
resolve();
61+
62+
await new Promise(r => setTimeout(r, WAIT));
63+
expect(done).toEqual(true);
64+
});
65+
66+
});

0 commit comments

Comments
 (0)