| 263 | }); |
| 264 | |
| 265 | function runCreateTests() { |
| 266 | it('can create a new doc then fetch', function(done) { |
| 267 | var doc = this.backend.connect().get('dogs', id); |
| 268 | doc.create({age: 3}, function(err) { |
| 269 | if (err) return done(err); |
| 270 | doc.fetch(function(err) { |
| 271 | if (err) return done(err); |
| 272 | expect(doc.data).eql({age: 3}); |
| 273 | expect(doc.version).eql(1); |
| 274 | done(); |
| 275 | }); |
| 276 | }); |
| 277 | }); |
| 278 | |
| 279 | it('calling create on the same doc twice fails', function(done) { |
| 280 | var doc = this.backend.connect().get('dogs', id); |
| 281 | doc.create({age: 3}, function(err) { |
| 282 | if (err) return done(err); |
| 283 | doc.create({age: 4}, function(err) { |
| 284 | expect(err).instanceOf(Error); |
| 285 | expect(doc.version).equal(1); |
| 286 | expect(doc.data).eql({age: 3}); |
| 287 | done(); |
| 288 | }); |
| 289 | }); |
| 290 | }); |
| 291 | |
| 292 | it('trying to create an already created doc without fetching fails and fetches', function(done) { |
| 293 | var doc = this.backend.connect().get('dogs', id); |
| 294 | var doc2 = this.backend.connect().get('dogs', id); |
| 295 | doc.create({age: 3}, function(err) { |
| 296 | if (err) return done(err); |
| 297 | doc2.create({age: 4}, function(err) { |
| 298 | expect(err).instanceOf(Error); |
| 299 | expect(doc2.version).equal(1); |
| 300 | expect(doc2.data).eql({age: 3}); |
| 301 | done(); |
| 302 | }); |
| 303 | }); |
| 304 | }); |
| 305 | |
| 306 | it('does not fail when resubmitting a create op', function(done) { |
| 307 | var backend = this.backend; |
| 308 | var connection = backend.connect(); |
| 309 | var submitted = false; |
| 310 | backend.use('submit', function(request, next) { |
| 311 | if (!submitted) { |
| 312 | submitted = true; |
| 313 | connection.close(); |
| 314 | backend.connect(connection); |
| 315 | } |
| 316 | next(); |
| 317 | }); |
| 318 | |
| 319 | var count = 0; |
| 320 | backend.use('reply', function(message, next) { |
| 321 | next(); |
| 322 | if (message.reply.a === 'op') count++; |