Skip to content

Commit a2d1d86

Browse files
author
Manuel Overdijk
committed
Merge branch 'develop' into v1.2.2
* develop: Updated firebase to version 3.7.3 Corrected jsdoc of prioritsedArray function Added test for eventEmitter to validate new behaviour of once() # Conflicts: # package.json
2 parents f18884f + 8736f96 commit a2d1d86

File tree

4 files changed

+88
-4
lines changed

4 files changed

+88
-4
lines changed

config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ System.config({
2727
"famous-bkimagesurface": "github:ijzerenhein/famous-bkimagesurface@1.0.3",
2828
"famous-flex": "github:bizboard/famous-flex@1.3.12",
2929
"fastclick": "npm:fastclick@1.0.6",
30-
"firebase": "github:firebase/firebase-bower@3.7.0",
30+
"firebase": "github:firebase/firebase-bower@3.7.3",
3131
"fs": "github:jspm/nodelibs-fs@0.1.2",
3232
"lodash": "npm:lodash@4.13.1",
3333
"lodash-decorators": "npm:lodash-decorators@3.0.1",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"famous": "github:bizboard/famous@0.3.11",
2626
"famous-flex": "github:bizboard/famous-flex@1.3.12",
2727
"fastclick": "npm:fastclick@^1.0.6",
28-
"firebase": "github:firebase/firebase-bower@^3.7.0",
28+
"firebase": "github:firebase/firebase-bower@^3.7.3",
2929
"lodash": "npm:lodash@^4.13.1",
3030
"lodash-decorators": "npm:lodash-decorators@^3.0.1",
3131
"ordered-hashmap": "npm:ordered-hashmap@^1.0.0",

src/data/PrioritisedArray.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,8 @@ export class PrioritisedArray extends Array {
294294

295295
/**
296296
* Return the position of model's id, saved in an associative array
297-
* @param {Number} id Id field of the model we're looking for
297+
* @param {String} id Id field of the model we're looking for
298298
* @returns {Number} Zero-based index if found, -1 otherwise
299-
* @private
300299
*/
301300
findIndexById(id) {
302301
let position = this._ids[id];

test/famous/EventEmitterSpec.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import _ from 'lodash';
2+
import sinon from 'sinon';
3+
import chai from 'chai';
4+
import {loadDependencies,mockDOMGlobals,
5+
mockDependency} from '../meta/TestBootstrap.js';
6+
7+
8+
let expect = chai.expect;
9+
let should = chai.should();
10+
11+
describe('Event emitter', () => {
12+
let imports = {};
13+
14+
before(() => {
15+
mockDOMGlobals();
16+
17+
mockDependency('./src/utils/Context.js', {
18+
Context: {
19+
getContext: () => ({
20+
'get': () => ({child: () => ({once: () => 0})})
21+
})
22+
}
23+
});
24+
25+
return loadDependencies({
26+
EventEmitter: System.normalizeSync('famous/core/EventEmitter.js')
27+
}).then((importedObjects) => {
28+
imports = importedObjects;
29+
});
30+
});
31+
32+
describe('#constructor', () => {
33+
it('constructs without exceptions', () => {
34+
let eventEmitter = new imports.EventEmitter();
35+
should.exist(eventEmitter);
36+
});
37+
});
38+
39+
describe('#once listener', () => {
40+
it(`Makes a once() registered listener only be called once`, () => {
41+
let eventEmitter= new imports.EventEmitter();
42+
let run = sinon.spy();
43+
eventEmitter.once('ready', run);
44+
eventEmitter.emit('ready');
45+
eventEmitter.emit('ready');
46+
expect(run.calledOnce).to.be.true;
47+
});
48+
49+
it(`Handles on() in combination with once() correctly`, () => {
50+
let eventEmitter= new imports.EventEmitter();
51+
let onceRunner = sinon.spy();
52+
let onRunner = sinon.spy();
53+
let secondOnRunner = sinon.spy();
54+
eventEmitter.on('ready', onRunner);
55+
eventEmitter.once('ready', onceRunner);
56+
eventEmitter.on('ready', secondOnRunner);
57+
eventEmitter.emit('ready');
58+
eventEmitter.emit('ready');
59+
expect(onceRunner.calledOnce).to.be.true;
60+
expect(onRunner.calledTwice).to.be.true;
61+
expect(secondOnRunner.calledTwice).to.be.true;
62+
});
63+
64+
it(`Doesn't let removeListener invalidate the once() logic`, () => {
65+
let eventEmitter= new imports.EventEmitter();
66+
let onceRunner = sinon.spy();
67+
let onRunner = sinon.spy();
68+
let secondOnRunner = sinon.spy();
69+
let selfRemoving = () => {
70+
eventEmitter.removeListener('ready', selfRemoving);
71+
};
72+
eventEmitter.on('ready', selfRemoving);
73+
eventEmitter.on('ready', onRunner);
74+
eventEmitter.once('ready', onceRunner);
75+
eventEmitter.on('ready', secondOnRunner);
76+
eventEmitter.on('ready', selfRemoving);
77+
eventEmitter.emit('ready');
78+
eventEmitter.emit('ready');
79+
expect(onceRunner.calledOnce).to.be.true;
80+
expect(onRunner.calledTwice).to.be.true;
81+
expect(secondOnRunner.calledTwice).to.be.true;
82+
});
83+
});
84+
85+
});

0 commit comments

Comments
 (0)