forked from mantrajs/meteor-mantra-kickstarter
-
Notifications
You must be signed in to change notification settings - Fork 4
/
post.js
88 lines (75 loc) · 2.66 KB
/
post.js
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
const {describe, it} = global;
import {expect} from 'chai';
import {stub, spy} from 'sinon';
import {composer} from '../post';
describe('core.containers.post', () => {
describe('composer', () => {
const Tracker = {nonreactive: cb => cb()};
const getCollections = (post) => {
const Collections = {
Posts: {findOne: stub()}
};
Collections.Posts.findOne.returns(post);
return Collections;
};
it('should subscribe to the given postId via prop', () => {
const Meteor = {subscribe: stub()};
Meteor.subscribe.returns({ready: () => false});
const Collections = getCollections();
const context = () => ({Meteor, Tracker, Collections});
const postId = 'dwd';
const onData = spy();
composer({context, postId}, onData);
const args = Meteor.subscribe.args[0];
expect(args.slice(0, 2)).to.deep.equal([
'posts.single', postId
]);
});
describe('before subscription ready', () => {
describe('with latency componsation', () => {
it('should call onData with data', done => {
const Meteor = {subscribe: stub()};
Meteor.subscribe.returns({ready: () => false});
const post = {aa: 10};
const Collections = getCollections(post);
const context = () => ({Meteor, Tracker, Collections});
const postId = 'dwd';
const onData = (err, data) => {
expect(data).to.be.deep.equal({post});
done();
};
composer({context, postId}, onData);
});
});
describe('with no latency componsation', () => {
it('should call onData without nothing', done => {
const Meteor = {subscribe: stub()};
Meteor.subscribe.returns({ready: () => false});
const Collections = getCollections();
const context = () => ({Meteor, Tracker, Collections});
const postId = 'dwd';
const onData = (err, data) => {
expect(data).to.be.equal(undefined);
done();
};
composer({context, postId}, onData);
});
});
});
describe('after subscription is ready', () => {
it('should call onData with data', done => {
const Meteor = {subscribe: stub()};
Meteor.subscribe.returns({ready: () => false});
const post = {aa: 10};
const Collections = getCollections(post);
const context = () => ({Meteor, Tracker, Collections});
const postId = 'dwd';
const onData = (err, data) => {
expect(data).to.be.deep.equal({post});
done();
};
composer({context, postId}, onData);
});
});
});
});