Skip to content

Commit

Permalink
Add ENV.VIEW_STATE to warn or throw on ViewState usage.
Browse files Browse the repository at this point in the history
Closes emberjs#6.
  • Loading branch information
Erik Bryn and James A. Rosen authored and ebryn committed Jul 29, 2013
1 parent 68b27ff commit 7048988
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ app more and more Ember-1.0-compatible.

* [Accessors](doc/accessors.md)
* [Ember.Object.create](doc/object_create.md)
* [Ember.ViewState](doc/view_state.md)
9 changes: 9 additions & 0 deletions doc/view_state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Ember.ViewState

In Ember 1.0, `Ember.ViewState` has been removed. This fork introduces a flag, `ENV.VIEW_STATE`, with three allowed values:

* `null` (the default) -- `Ember.ViewState` works per 0.9.8.1
* `"warn"` -- Calling `extend` or `create` will warn
* `"1.0"` -- Calling `extend` or `create` will throw

See [issue #6](https://github.com/zendesk/ember.js/issues/6) for more information.
47 changes: 47 additions & 0 deletions packages/ember-states/tests/backports/view_state_test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
var originalFlag, originalWarn, warnings;

module("Backported Ember.ViewState", {
setup: function() {
originalFlag = Ember.ENV.VIEW_STATE;
originalWarn = Ember.Logger.warn;
warnings = [];
Ember.Logger.warn = function(msg) {
warnings.push(msg.replace("WARNING: ", ""));
};
},
teardown: function() {
Ember.ENV.VIEW_STATE = originalFlag;
Ember.Logger.warn = originalWarn;
}
});

test("doesn't warn on null level", function() {
Ember.ENV.VIEW_STATE = null;

Ember.ViewState.extend();
Ember.ViewState.create();
equal(warnings.length, 0);
});

test("warns on warn level", function() {
Ember.ENV.VIEW_STATE = 'warn';

Ember.ViewState.extend();
equal(warnings.length, 1);
equal(warnings[0], "Ember.ViewState has been removed from Ember 1.0.");
Ember.ViewState.create();
equal(warnings.length, 2);
equal(warnings[1], "Ember.ViewState has been removed from Ember 1.0.");
});

test("throws on error level", function() {
Ember.ENV.VIEW_STATE = '1.0';

raises(function() {
Ember.ViewState.extend();
}, /Ember\.ViewState has been removed from Ember 1\.0\./);

raises(function() {
Ember.ViewState.create();
}, /Ember\.ViewState has been removed from Ember 1\.0\./);
});
20 changes: 20 additions & 0 deletions packages/ember-viewstates/lib/view_state.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,23 @@ Ember.ViewState = Ember.State.extend({
}
}
});

function ensureViewStateAvailable() {
var op = {
warn: Ember.warn,
"1.0": Ember.assert
}[Ember.ENV.VIEW_STATE] || Ember.K;
op("Ember.ViewState has been removed from Ember 1.0.");
}

Ember.ViewState.reopenClass({
extend: function() {
ensureViewStateAvailable();
return this._super.apply(this, arguments);
},

create: function() {
ensureViewStateAvailable();
return this._super.apply(this, arguments);
}
});

0 comments on commit 7048988

Please sign in to comment.