UNPKG

3 kBJavaScriptView Raw
1'use strict';
2
3var
4 assert = require('assert'),
5 fixtures = require('./fixtures'),
6 customMapper = function (name) {
7 return 'spread' + name.charAt(0).toUpperCase() + name.substring(1);
8 },
9 // NOTE: with spread
10 mongoose = require('../index')(require('mongoose'), {spread: true, mapper: customMapper}),
11 schemas = require('./schemas'),
12 UserModel = mongoose.model('User', schemas.UserSchema),
13 PostModel = mongoose.model('Post', schemas.PostSchema),
14 debug = require('debug')('test');
15
16describe('mongooseq_with_spread', function () {
17 beforeEach(function (done) {
18 var fixturesLoader = require('pow-mongodb-fixtures').connect('test');
19 fixturesLoader.clearAndLoad(fixtures, function (err) {
20 if (err) throw err;
21 fixturesLoader.client.close();
22 mongoose.connect('mongodb://localhost/test');
23 done();
24 });
25 });
26 afterEach(function (done) {
27 mongoose.disconnect();
28 done();
29 });
30 it('should create', function (done) {
31 UserModel.spreadCreate({name: 'hello spread'}, {name: 'world spread'})
32 .spread(function (createdUser1, createdUser2) {
33 debug('created users:', arguments);
34 assert.equal(createdUser1.name, 'hello spread');
35 // NOTE: you could get all result with 'spread' option
36 assert.equal(createdUser2.name, 'world spread');
37 })
38 .catch(assert.ifError)
39 .done(done);
40 });
41 it('should update', function (done) {
42 PostModel.spreadUpdate({_id: fixtures.posts.p1._id}, { title: 'changed'})
43 .spread(function (affectedRows, raw) {
44 debug('Model.update-->', arguments);
45 assert.equal(affectedRows, 1);
46 // NOTE: you could get all result with 'spread' option
47 assert.ok(raw);
48 })
49 .catch(assert.ifError)
50 .done(done);
51 });
52 it('should save', function (done) {
53 var post = new PostModel();
54 post.__pre_save_called = false;
55 post.__post_save_called = false;
56 post.title = 'new-title';
57 post.author = fixtures.users.u1._id;
58 assert.ok(post.isNew);
59 post.spreadSave()
60 .spread(function (result, affectedRows) {// with 'spread' options
61 debug('Model#save-->', arguments);
62 assert.ok(result);
63 assert.ok(!result.isNew);
64 assert.ok(result._id);
65 assert.equal(result.title, 'new-title');
66 assert.equal(result.author.toString(), fixtures.users.u1._id.toString());
67 // NOTE: you could get all result with 'spread option
68 assert.equal(affectedRows, 1);
69 })
70 .catch(assert.ifError)
71 .done(function () {
72 assert(post.__pre_save_called && post.__post_save_called);
73 done();
74 });
75 });
76});