Enable remoting for embedsOne relation
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
This commit is contained in:
parent
50e1f350aa
commit
19155242c1
|
@ -192,9 +192,12 @@ Model.setup = function () {
|
||||||
for (var relationName in relations) {
|
for (var relationName in relations) {
|
||||||
var relation = relations[relationName];
|
var relation = relations[relationName];
|
||||||
if (relation.type === 'belongsTo') {
|
if (relation.type === 'belongsTo') {
|
||||||
ModelCtor.belongsToRemoting(relationName, relation, define)
|
ModelCtor.belongsToRemoting(relationName, relation, define);
|
||||||
} else if (relation.type === 'hasOne') {
|
} else if (
|
||||||
ModelCtor.hasOneRemoting(relationName, relation, define)
|
relation.type === 'hasOne' ||
|
||||||
|
relation.type === 'embedsOne'
|
||||||
|
) {
|
||||||
|
ModelCtor.hasOneRemoting(relationName, relation, define);
|
||||||
} else if (
|
} else if (
|
||||||
relation.type === 'hasMany' ||
|
relation.type === 'hasMany' ||
|
||||||
relation.type === 'embedsMany' ||
|
relation.type === 'embedsMany' ||
|
||||||
|
|
|
@ -493,6 +493,65 @@ describe('relations - integration', function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('embedsOne', function() {
|
||||||
|
|
||||||
|
before(function defineGroupAndImageModels() {
|
||||||
|
var group = app.model(
|
||||||
|
'group',
|
||||||
|
{ properties: { name: 'string' },
|
||||||
|
dataSource: 'db',
|
||||||
|
plural: 'groups'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
var image = app.model(
|
||||||
|
'image',
|
||||||
|
{ properties: { url: 'string' }, dataSource: 'db' }
|
||||||
|
);
|
||||||
|
group.embedsOne(image, { as: 'cover' });
|
||||||
|
});
|
||||||
|
|
||||||
|
before(function createImage(done) {
|
||||||
|
var test = this;
|
||||||
|
app.models.group.create({ name: 'Group 1' },
|
||||||
|
function(err, list) {
|
||||||
|
if (err) return done(err);
|
||||||
|
test.group = group;
|
||||||
|
group.image.build({ url: 'http://image.url' });
|
||||||
|
group.save(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
after(function(done) {
|
||||||
|
this.app.models.group.destroyAll(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('includes the embedded models', function(done) {
|
||||||
|
var url = '/api/groups/' + this.group.id;
|
||||||
|
|
||||||
|
this.get(url)
|
||||||
|
.expect(200, function(err, res) {
|
||||||
|
expect(res.body.name).to.be.equal('Group 1');
|
||||||
|
expect(res.body.imageItem).to.be.eql([
|
||||||
|
{ url: 'http://image.url' }
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns the embedded model', function(done) {
|
||||||
|
var url = '/api/groups/' + this.group.id + '/cover';
|
||||||
|
|
||||||
|
this.get(url)
|
||||||
|
.expect(200, function(err, res) {
|
||||||
|
expect(res.body).to.be.eql([
|
||||||
|
{ url: 'http://image.url' },
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
describe('embedsMany', function() {
|
describe('embedsMany', function() {
|
||||||
|
|
||||||
before(function defineProductAndCategoryModels() {
|
before(function defineProductAndCategoryModels() {
|
||||||
|
|
Loading…
Reference in New Issue