|
293 | 293 | assert.equal(a.id, undefined, 'Unsetting the id should remove the id property.'); |
294 | 294 | }); |
295 | 295 |
|
| 296 | + QUnit.test('set with reset option', function(assert) { |
| 297 | + assert.expect(8); |
| 298 | + var a = new Backbone.Model({id: 'id', foo: 1, bar: 2}); |
| 299 | + var changeFooCount = 0; |
| 300 | + var changeBarCount = 0; |
| 301 | + var changeBazCount = 0; |
| 302 | + var changeIdCount = 0; |
| 303 | + a.on('change:foo', function() { changeFooCount += 1; }); |
| 304 | + a.on('change:bar', function() { changeBarCount += 1; }); |
| 305 | + a.on('change:baz', function() { changeBazCount += 1; }); |
| 306 | + a.on('change:id', function() { changeIdCount += 1; }); |
| 307 | + a.set({foo: 2, bar: 2, baz: 3}, {reset: true}); |
| 308 | + assert.equal(a.get('foo'), 2, 'Foo should have changed.'); |
| 309 | + assert.equal(changeFooCount, 1, 'Change count should have incremented.'); |
| 310 | + |
| 311 | + assert.equal(a.get('id'), void 0, 'Id should have be unset'); |
| 312 | + assert.equal(changeIdCount, 1, 'Change count should have incremented.'); |
| 313 | + |
| 314 | + assert.equal(a.get('bar'), 2, 'Bar should NOT have changed'); |
| 315 | + assert.equal(changeBarCount, 0, 'Change count should NOT have incremented.'); |
| 316 | + |
| 317 | + assert.equal(a.get('baz'), 3, 'Baz should have be set'); |
| 318 | + assert.equal(changeBazCount, 1, 'Change count should have incremented.'); |
| 319 | + }); |
| 320 | + |
296 | 321 | QUnit.test('#2030 - set with failed validate, followed by another set triggers change', function(assert) { |
297 | 322 | var attr = 0, main = 0, error = 0; |
298 | 323 | var Model = Backbone.Model.extend({ |
|
0 commit comments