Skip to content

Commit 6972d6f

Browse files
committed
tests for issue #8 when there are multiple models stuck in a view
1 parent 7ae82e2 commit 6972d6f

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

test/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@ <h2 id="qunit-userAgent"></h2>
6464

6565
<script id="jst11" type="text/jst"><input type="number" id="test11"></script>
6666

67+
<script id="jst12" type="text/jst">
68+
<input type="number" class="test12-1">
69+
<input type="number" class="test12-2">
70+
<input type="number" class="test12-3">
71+
<input type="number" class="test12-4">
72+
</script>
73+
74+
<script id="jst13" type="text/jst">
75+
<input type="number" class="test13-5">
76+
<input type="number" class="test13-6">
77+
</script>
78+
6779
</body>
6880

6981
</html>

test/modelBinding.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,66 @@ $(document).ready(function() {
2828
equal(_.keys(view.model._callbacks).length, 0);
2929
});
3030

31+
test('unstickModel (multiple models across multiple views)', function() {
32+
33+
var model1, model2, view, view2, model3;
34+
35+
model1 = new (Backbone.Model)({one:'', two:''});
36+
model2 = new (Backbone.Model)({three:'', four:''});
37+
model3 = new (Backbone.Model)({five:'', six:''});
38+
39+
view = new (Backbone.View.extend({
40+
initialize: function() {
41+
this.model = model1;
42+
},
43+
bindings: {
44+
'.test12-1': 'one',
45+
'.test12-2': 'two'
46+
},
47+
otherBindings: {
48+
'.test12-3': 'three',
49+
'.test12-4': 'four'
50+
},
51+
render: function() {
52+
var html = document.getElementById('jst12').innerHTML;
53+
this.$el.html(_.template(html)());
54+
this.stickit();
55+
this.stickit(model2, this.otherBindings);
56+
return this;
57+
}
58+
}))().render();
59+
60+
view2 = new (Backbone.View.extend({
61+
bindings: {
62+
'.test13-5': 'five',
63+
'.test13-6': 'six'
64+
},
65+
render: function() {
66+
var html = document.getElementById('jst13').innerHTML;
67+
this.$el.html(_.template(html)());
68+
this.stickit(model3);
69+
return this;
70+
}
71+
}))().render();
72+
73+
74+
equal(_.keys(model1._callbacks).length, 2);
75+
equal(_.keys(model2._callbacks).length, 2);
76+
equal(_.keys(model3._callbacks).length, 2);
77+
equal(view._modelBindings.length, 4);
78+
equal(view2._modelBindings.length, 2);
79+
80+
view.unstickModel();
81+
82+
equal(_.keys(model1._callbacks).length, 0);
83+
equal(_.keys(model2._callbacks).length, 0);
84+
equal(view._modelBindings.length, 0);
85+
equal(_.keys(model3._callbacks).length, 2);
86+
87+
view2.unstickModel();
88+
89+
equal(_.keys(model3._callbacks).length, 0);
90+
equal(view2._modelBindings.length, 0);
91+
});
92+
3193
});

0 commit comments

Comments
 (0)