forked from strongloop/loopback
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathremote-connector.test.js
101 lines (83 loc) · 2.79 KB
/
remote-connector.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// Copyright IBM Corp. 2014,2016. All Rights Reserved.
// Node module: loopback
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
var loopback = require('../');
var defineModelTestsWithDataSource = require('./util/model-tests');
describe('RemoteConnector', function() {
this.timeout(10000);
var remoteApp, remote;
defineModelTestsWithDataSource({
beforeEach: function(done) {
var test = this;
remoteApp = loopback();
remoteApp.set('remoting', {
errorHandler: { debug: true, log: false },
types: { warnWhenOverridingType: false },
});
remoteApp.use(loopback.rest());
remoteApp.listen(0, function() {
test.dataSource = loopback.createDataSource({
host: 'localhost',
port: remoteApp.get('port'),
connector: loopback.Remote,
});
done();
});
},
// We are defining the model attached to the remote connector datasource,
// therefore change tracking must be disabled, only the remote API for
// replication should be present
trackChanges: false,
enableRemoteReplication: true,
onDefine: function(Model) {
var ServerModel = Model.extend('Server' + Model.modelName, {}, {
plural: Model.pluralModelName,
// This is the model running on the server & attached to a real
// datasource, that's the place where to keep track of changes
trackChanges: true,
});
ServerModel.attachTo(loopback.createDataSource({
connector: loopback.Memory,
}));
remoteApp.model(ServerModel);
},
});
beforeEach(function(done) {
var test = this;
remoteApp = this.remoteApp = loopback();
remoteApp.set('remoting', {
types: { warnWhenOverridingType: false },
});
remoteApp.use(loopback.rest());
var ServerModel = this.ServerModel = loopback.PersistedModel.extend('TestModel');
remoteApp.model(ServerModel);
remoteApp.listen(0, function() {
test.remote = loopback.createDataSource({
host: 'localhost',
port: remoteApp.get('port'),
connector: loopback.Remote,
});
done();
});
});
it('should support the save method', function(done) {
var calledServerCreate = false;
var RemoteModel = loopback.PersistedModel.extend('TestModel');
RemoteModel.attachTo(this.remote);
var ServerModel = this.ServerModel;
ServerModel.create = function(data, cb) {
calledServerCreate = true;
data.id = 1;
cb(null, data);
};
ServerModel.setupRemoting();
var m = new RemoteModel({ foo: 'bar' });
m.save(function(err, inst) {
if (err) return done(err);
assert(inst instanceof RemoteModel);
assert(calledServerCreate);
done();
});
});
});