Enable remoting for embedsOne relation

Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
This commit is contained in:
Jaka Hudoklin 2014-08-22 15:39:53 +02:00 committed by Fabien Franzen
parent 50e1f350aa
commit 19155242c1
2 changed files with 65 additions and 3 deletions

View File

@ -192,9 +192,12 @@ Model.setup = function () {
for (var relationName in relations) {
var relation = relations[relationName];
if (relation.type === 'belongsTo') {
ModelCtor.belongsToRemoting(relationName, relation, define)
} else if (relation.type === 'hasOne') {
ModelCtor.hasOneRemoting(relationName, relation, define)
ModelCtor.belongsToRemoting(relationName, relation, define);
} else if (
relation.type === 'hasOne' ||
relation.type === 'embedsOne'
) {
ModelCtor.hasOneRemoting(relationName, relation, define);
} else if (
relation.type === 'hasMany' ||
relation.type === 'embedsMany' ||

View File

@ -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() {
before(function defineProductAndCategoryModels() {