Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80698 views
1
"use strict";
2
3
jest.autoMockOff();
4
5
describe('AppDispatcher', function() {
6
var AppDispatcher;
7
8
beforeEach(function() {
9
AppDispatcher = require('../AppDispatcher.js');
10
});
11
12
it('sends actions to subscribers', function() {
13
var listener = jest.genMockFunction();
14
AppDispatcher.register(listener);
15
16
var payload = {};
17
AppDispatcher.dispatch(payload);
18
expect(listener.mock.calls.length).toBe(1);
19
expect(listener.mock.calls[0][0]).toBe(payload);
20
});
21
22
it('waits with chained dependencies properly', function() {
23
var payload = {};
24
25
var listener1Done = false;
26
var listener1 = function(pl) {
27
AppDispatcher.waitFor([index2, index4]);
28
// Second, third, and fourth listeners should have now been called
29
expect(listener2Done).toBe(true);
30
expect(listener3Done).toBe(true);
31
expect(listener4Done).toBe(true);
32
listener1Done = true;
33
};
34
var index1 = AppDispatcher.register(listener1);
35
36
var listener2Done = false;
37
var listener2 = function(pl) {
38
AppDispatcher.waitFor([index3]);
39
expect(listener3Done).toBe(true);
40
listener2Done = true;
41
};
42
var index2 = AppDispatcher.register(listener2);
43
44
var listener3Done = false;
45
var listener3 = function(pl) {
46
listener3Done = true;
47
};
48
var index3 = AppDispatcher.register(listener3);
49
50
var listener4Done = false;
51
var listener4 = function(pl) {
52
AppDispatcher.waitFor([index3]);
53
expect(listener3Done).toBe(true);
54
listener4Done = true;
55
};
56
var index4 = AppDispatcher.register(listener4);
57
58
runs(function() {
59
AppDispatcher.dispatch(payload);
60
});
61
62
waitsFor(function() {
63
return listener1Done;
64
}, "Not all subscribers were properly called", 500);
65
66
runs(function() {
67
expect(listener1Done).toBe(true);
68
expect(listener2Done).toBe(true);
69
expect(listener3Done).toBe(true);
70
});
71
});
72
});
73
74