FIX: Fix rerendering issues on some components.

This commit is contained in:
Robin Ward
2014-12-08 12:59:04 -05:00
parent 7069ee16e2
commit 5fd3f2547c
18 changed files with 96 additions and 162 deletions

View File

@@ -30,47 +30,3 @@ test("registerHelper: enables embedding a child view in a parent view via dedica
equal(parentView.$("#child").length, 1, "child view registered as helper is appended to the parent view");
equal(parentView.$("#child").text(), "foo", "child view registered as helper gets parameters provided during helper invocation in parent's template");
});
test("renderIfChanged: rerenders the whole view template when one of registered view fields changes", function() {
var view, rerenderSpy;
var viewRerendersOnceWhen = function(message, changeCallback) {
rerenderSpy.reset();
Ember.run(function() { changeCallback(); });
ok(rerenderSpy.calledOnce, "view rerenders when " + message);
};
var viewDoesNotRerenderWhen = function(message, changeCallback) {
rerenderSpy.reset();
Ember.run(function() { changeCallback(); });
ok(!rerenderSpy.called, "view does not rerender when " + message);
};
view = Ember.View.extend({
shouldRerender: Discourse.View.renderIfChanged("simple", "complex.@each.nested")
}).create({
simple: "initial value",
complex: [Ember.Object.create({nested: "initial value"})],
unregistered: "initial value"
});
rerenderSpy = sinon.spy(view, "rerender");
Ember.run(function() {
view.appendTo("#qunit-fixture");
});
viewRerendersOnceWhen("a simple field (holding a string) changes", function() {
view.set("simple", "updated value");
});
viewRerendersOnceWhen("a nested sub-field of a complex field (holding an array of objects) changes", function() {
view.get("complex").objectAt(0).set("nested", "updated value");
});
viewDoesNotRerenderWhen("unregistered field changes", function() {
view.set("unregistered", "updated value");
});
});