Skip to content

Commit

Permalink
[#4] add tests for parsing of resources with array content
Browse files Browse the repository at this point in the history
  • Loading branch information
ghillairet committed Jul 3, 2014
1 parent bf309d1 commit 4d3e49d
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 2 deletions.
3 changes: 2 additions & 1 deletion dist/ecore.js
Original file line number Diff line number Diff line change
Expand Up @@ -1714,8 +1714,9 @@ Ecore.JSON = {
model.add(parseObject(object));
});
} else {
model.add(parseObject(data));
model.add(parseObject(data));
}

resolveReferences();
},

Expand Down
3 changes: 2 additions & 1 deletion src/resource.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,9 @@ Ecore.JSON = {
model.add(parseObject(object));
});
} else {
model.add(parseObject(data));
model.add(parseObject(data));
}

resolveReferences();
},

Expand Down
58 changes: 58 additions & 0 deletions test/resource.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,64 @@ describe('Resource', function() {

});

describe('read model from json', function() {

it('should read model made of single object', function(done) {
var model = { eClass: "http://www.eclipse.org/emf/2002/Ecore#//EPackage", name: "foo"};

var resource = Ecore.Resource.create({ uri: 'simple.json' });
resource.load(function(result) {
assert.ok(result);
assert.equal(1, result.get('contents').size());

var root = result.get('contents').at(0);
assert.ok(root);
assert.equal('EPackage', root.eClass.get('name'));
assert.equal('foo', root.get('name'));

done();
}, function(err) {
assert.fail(err, null);
done();
}, { data: model });
});

it('should read model made of array of objects', function(done) {
var model = [
{ eClass: "http://www.eclipse.org/emf/2002/Ecore#//EPackage", name: "foo"},
{ eClass: "http://www.eclipse.org/emf/2002/Ecore#//EPackage", name: "bar"},
{ eClass: "http://www.eclipse.org/emf/2002/Ecore#//EPackage", name: "acme"}
];

var resource = Ecore.Resource.create({ uri: 'simple.json' });
resource.load(function(result) {
assert.ok(result);
assert.equal(3, result.get('contents').size());

var r1 = result.get('contents').at(0);
assert.ok(r1);
assert.equal('EPackage', r1.eClass.get('name'));
assert.equal('foo', r1.get('name'));

var r2 = result.get('contents').at(1);
assert.ok(r2);
assert.equal('EPackage', r2.eClass.get('name'));
assert.equal('bar', r2.get('name'));

var r3 = result.get('contents').at(2);
assert.ok(r3);
assert.equal('EPackage', r3.eClass.get('name'));
assert.equal('acme', r3.get('name'));

done();
}, function(err) {
assert.fail(err, null);
done();
}, { data: model });
});

});

describe('load model from filesystem', function() {

it('should build the model', function(done) {
Expand Down

0 comments on commit 4d3e49d

Please sign in to comment.