Skip to content

Commit

Permalink
Merge pull request softlayer#1 from azizpunjani/issue156
Browse files Browse the repository at this point in the history
Changed API interface a little to accomodate for event firing
  • Loading branch information
theoshu committed Nov 30, 2015
2 parents 97acf3f + 1feb16e commit aa4a74d
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 9 deletions.
30 changes: 26 additions & 4 deletions test-support/helpers/sl/synchronous/global-libraries.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,40 @@ import sinon from 'sinon';
export let called;
export let jqueryAliasSpy;
export let jquerySpy;
export let emberJquery;
export let emberJquerySpy;

export function setupSpies() {
jqueryAliasSpy = sinon.spy( window, '$' );
jquerySpy = sinon.spy( window, 'jQuery' );
emberJquery = sinon.spy( Ember, '$' );
emberJquerySpy = sinon.spy( Ember, '$' );
}

export function restoreSpies() {
called = jqueryAliasSpy.called || jquerySpy.called || emberJquery.called;
export function triggerEvents( component ) {
Ember.run(() => {
[
'willInsertElement',
'didInsertElement',
'willClearRender',
'willDestroyElement'
].map(( event ) => {
component.trigger( event );
});
});
}

export function called() {
return jqueryAliasSpy.called || jquerySpy.called || emberJquerySpy.called;
}

export function restoreSpies() {
window.$.restore();
window.jQuery.restore();
Ember.$.restore();
}

export function resetSpies() {
jqueryAliasSpy.reset();
jquerySpy.reset();
emberJquerySpy.reset();
}

79 changes: 74 additions & 5 deletions tests/unit/helpers/sl/synchronous/global-libaries-test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Ember from 'ember';
import { test } from 'ember-qunit';
import * as globalLibraries from '../../../../helpers/sl/synchronous/global-libraries';
import sinon from 'sinon';

module( 'Unit | Helpers | sl/synchronous/global-libraries' );

Expand All @@ -10,14 +12,81 @@ test( 'it exists', function( assert ) {
);
});

test( 'Functions as expected', function( assert ) {
test( 'Passes when global libraries are not referenced', function( assert ) {
const component = Ember.Object.extend().create({
trigger: function() {}
});

globalLibraries.setupSpies();

globalLibraries.triggerEvents( component );

assert.notOk(
globalLibraries.called()
);

globalLibraries.restoreSpies();
});

test( 'triggerEvents triggers respective events', function( assert ) {
const events = {
'willInsertElement': sinon.spy() ,
'didInsertElement': sinon.spy() ,
'willClearRender': sinon.spy() ,
'willDestroyElement': sinon.spy()
};

const component = {
trigger: function( eventName ) {
this.events[ eventName ]();
},

events
};

globalLibraries.triggerEvents( component );

assert.equal(
globalLibraries.called,
false,
'There are no references to Ember.$, $ or jQuery'
Object.keys( events ).forEach(( eventName ) => {
const spy = events[ eventName ];
assert.ok(
spy.called,
`${ eventName } was triggered`
);
});
});

test( 'called() returns true when $ is referenced', function( assert ) {
globalLibraries.setupSpies();

window.$();

assert.ok(
globalLibraries.called()
);

globalLibraries.restoreSpies();
});

test( 'called() returns true when jQuery is referenced', function( assert ) {
globalLibraries.setupSpies();

window.jQuery();

assert.ok(
globalLibraries.called()
);

globalLibraries.restoreSpies();
});

test( 'called() returns true when Ember.$ is referenced', function( assert ) {
globalLibraries.setupSpies();

Ember.$();

assert.ok(
globalLibraries.called()
);

globalLibraries.restoreSpies();
});

0 comments on commit aa4a74d

Please sign in to comment.