From 13acb8a8229e2d567699d8dd154741cc822345c5 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 3 Mar 2011 17:06:16 -0500 Subject: [PATCH 1/6] fix documentation and tests for negative ids The documentation said that a model was considered new if it had a negative id. The test had the right message, but failed to instantiate the model the for the second assertion, and the assertion was inverted. --- backbone.js | 3 +-- test/model.js | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backbone.js b/backbone.js index 47e85aeb..c5eb7e6b 100644 --- a/backbone.js +++ b/backbone.js @@ -321,8 +321,7 @@ return new this.constructor(this); }, - // A model is new if it has never been saved to the server, and has a negative - // ID. + // A model is new if it does not have an ID. isNew : function() { return !this.id; }, diff --git a/test/model.js b/test/model.js index 7b4e9dda..6598e0ed 100644 --- a/test/model.js +++ b/test/model.js @@ -96,7 +96,8 @@ $(document).ready(function() { a = new Backbone.Model(attrs); ok(a.isNew(), "it should be new"); attrs = { 'foo': 1, 'bar': 2, 'baz': 3, 'id': -5 }; - ok(a.isNew(), "any defined ID is legal, negative or positive"); + a = new Backbone.Model(attrs); + ok(!a.isNew(), "any defined ID is legal, negative or positive"); }); test("Model: get", function() { From 5ebd949c7f2f38f3a4d519512a72975aa73101b8 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 3 Mar 2011 17:20:38 -0500 Subject: [PATCH 2/6] use hash literal directly This will make it harder to forget to instantiate the model. --- test/model.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/model.js b/test/model.js index 6598e0ed..adce36ba 100644 --- a/test/model.js +++ b/test/model.js @@ -92,11 +92,9 @@ $(document).ready(function() { }); test("Model: isNew", function() { - attrs = { 'foo': 1, 'bar': 2, 'baz': 3}; - a = new Backbone.Model(attrs); + a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3}); ok(a.isNew(), "it should be new"); - attrs = { 'foo': 1, 'bar': 2, 'baz': 3, 'id': -5 }; - a = new Backbone.Model(attrs); + a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3, 'id': -5 }); ok(!a.isNew(), "any defined ID is legal, negative or positive"); }); From 8971361bdc14ef968816c53b341cedda074bc333 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 3 Mar 2011 17:33:19 -0500 Subject: [PATCH 3/6] split out test for positive and negative ids --- test/model.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/model.js b/test/model.js index adce36ba..b7eeea7c 100644 --- a/test/model.js +++ b/test/model.js @@ -94,8 +94,10 @@ $(document).ready(function() { test("Model: isNew", function() { a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3}); ok(a.isNew(), "it should be new"); + a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3, 'id': 2 }); + ok(!a.isNew(), "any defined ID is legal, positive integer"); a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3, 'id': -5 }); - ok(!a.isNew(), "any defined ID is legal, negative or positive"); + ok(!a.isNew(), "any defined ID is legal, negative integer"); }); test("Model: get", function() { From 4595b48ffb6a7d743c441ba1008fd84f2c7f854a Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 3 Mar 2011 17:35:09 -0500 Subject: [PATCH 4/6] refine the isNew test --- test/model.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/model.js b/test/model.js index b7eeea7c..1fc59872 100644 --- a/test/model.js +++ b/test/model.js @@ -92,12 +92,12 @@ $(document).ready(function() { }); test("Model: isNew", function() { - a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3}); - ok(a.isNew(), "it should be new"); - a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3, 'id': 2 }); - ok(!a.isNew(), "any defined ID is legal, positive integer"); - a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3, 'id': -5 }); - ok(!a.isNew(), "any defined ID is legal, negative integer"); + a = new Backbone.Model({ }); + ok(a.isNew(), "is true when there is no id"); + a = new Backbone.Model({ 'id': 2 }); + ok(!a.isNew(), "is false for a positive integer"); + a = new Backbone.Model({ 'id': -5 }); + ok(!a.isNew(), "is false for a negative integer"); }); test("Model: get", function() { From 12e9d95b452852f7386cf401c9017737951092d0 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 3 Mar 2011 17:40:26 -0500 Subject: [PATCH 5/6] add helper method to cleanup isNew test --- test/model.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/model.js b/test/model.js index 1fc59872..43de5815 100644 --- a/test/model.js +++ b/test/model.js @@ -12,6 +12,10 @@ $(document).ready(function() { lastRequest = _.toArray(arguments); }; + var model_with = function(attributes){ + return new Backbone.Model(attributes); + } + var attrs = { id : '1-the-tempest', title : "The Tempest", @@ -92,12 +96,9 @@ $(document).ready(function() { }); test("Model: isNew", function() { - a = new Backbone.Model({ }); - ok(a.isNew(), "is true when there is no id"); - a = new Backbone.Model({ 'id': 2 }); - ok(!a.isNew(), "is false for a positive integer"); - a = new Backbone.Model({ 'id': -5 }); - ok(!a.isNew(), "is false for a negative integer"); + ok( model_with({ }).isNew(), "is true when there is no id"); + ok(!model_with({ 'id': 2 }).isNew(), "is false for a positive integer"); + ok(!model_with({ 'id': -5 }).isNew(), "is false for a negative integer"); }); test("Model: get", function() { From d3a0b646034b5fd83079fa906406d4c6c00d7f79 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 31 May 2011 09:31:04 -0400 Subject: [PATCH 6/6] remove model_with helper from test --- test/model.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/test/model.js b/test/model.js index 43de5815..ac868a5f 100644 --- a/test/model.js +++ b/test/model.js @@ -12,10 +12,6 @@ $(document).ready(function() { lastRequest = _.toArray(arguments); }; - var model_with = function(attributes){ - return new Backbone.Model(attributes); - } - var attrs = { id : '1-the-tempest', title : "The Tempest", @@ -96,9 +92,9 @@ $(document).ready(function() { }); test("Model: isNew", function() { - ok( model_with({ }).isNew(), "is true when there is no id"); - ok(!model_with({ 'id': 2 }).isNew(), "is false for a positive integer"); - ok(!model_with({ 'id': -5 }).isNew(), "is false for a negative integer"); + ok( new Backbone.Model({ }).isNew(), "is true when there is no id"); + ok(!new Backbone.Model({ 'id': 2 }).isNew(), "is false for a positive integer"); + ok(!new Backbone.Model({ 'id': -5 }).isNew(), "is false for a negative integer"); }); test("Model: get", function() {