1 | 'use strict';
|
2 |
|
3 | var
|
4 | assert = require('assert'),
|
5 | fixtures = require('./fixtures'),
|
6 | customMapper = function (name) {
|
7 | return 'spread' + name.charAt(0).toUpperCase() + name.substring(1);
|
8 | },
|
9 |
|
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 |
|
16 | describe('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 |
|
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 |
|
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) {
|
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 |
|
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 | });
|