Skip to content

Commit

Permalink
pp now fires an event on every genuine state change. See the spec for…
Browse files Browse the repository at this point in the history
… examples
  • Loading branch information
andykent committed Mar 7, 2009
1 parent 8a709ab commit ff88986
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/polypage.jquery.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@

setState: function(stateName,val){
var newState = !!val;
if(this.getState(stateName)==newState) return newState;
this.states[stateName] = newState;
this.setCookie(stateName, newState);
this.refresh();
this.scope.trigger('pp_stateChange', { name:stateName, value:newState });
return newState;
},

Expand Down Expand Up @@ -139,7 +141,6 @@

evaluateNode: function(node){
var on = this.evaluate(this.extractDataFromClassName($(node).attr('class')));
// toggle on or off if to be displayed
$(node).toggle(on);
return on;
},
Expand Down
26 changes: 26 additions & 0 deletions spec/public-api-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,31 @@ Screw.Unit(function() {
expect('.pp_admin').to(be_visible);
});
});

describe("fired events", function() {
it("fires 'pp_stateChanged' everytime a page state changes (via toggling)", function() {
$('#dom').trigger('pp_setState', {logged_in:false});
var data = false;
$('#dom').bind('pp_stateChange', function(e, obj) { data = obj });
$('#dom').trigger('pp_toggleStates', 'logged_in');
expect(data).to(equal, {name:'logged_in', value:true});
});

it("fires 'pp_stateChanged' everytime a page state changes (via switching)", function() {
$('#dom').trigger('pp_setState', {logged_in:true});
var data = false;
$('#dom').bind('pp_stateChange', function(e, obj) { data = obj });
$('#dom').trigger('pp_setState', {logged_in:false});
expect(data).to(equal, {name:'logged_in', value:false});
});

it("doesn't fire 'pp_stateChanged' if the state hasn't changed", function() {
$('#dom').trigger('pp_setState', {logged_in:true});
var data = false;
$('#dom').bind('pp_stateChange', function(e, obj) { data = true });
$('#dom').trigger('pp_setState', {logged_in:true});
expect(data).to(be_false);
});
});
});
});

0 comments on commit ff88986

Please sign in to comment.