Add test cases for loading json doc
This commit is contained in:
parent
465a963d2d
commit
2a15926318
|
@ -146,3 +146,48 @@ describe('DataSource define model', function () {
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe('Load models from json', function () {
|
||||||
|
it('should be able to define models from json', function () {
|
||||||
|
var path = require('path'),
|
||||||
|
fs = require('fs');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load ADL schemas from a json doc
|
||||||
|
* @param schemaFile The schema json file
|
||||||
|
* @returns A map of schemas keyed by name
|
||||||
|
*/
|
||||||
|
function loadSchemasSync(schemaFile, dataSource) {
|
||||||
|
// Set up the data source
|
||||||
|
if (!dataSource) {
|
||||||
|
dataSource = new DataSource('memory');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the schema JSON file
|
||||||
|
var schemas = JSON.parse(fs.readFileSync(schemaFile));
|
||||||
|
|
||||||
|
return DataSource.buildModels(dataSource, schemas);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var models = loadSchemasSync(path.join(__dirname, 'test1-schemas.json'));
|
||||||
|
|
||||||
|
models.should.have.property('anonymous');
|
||||||
|
models.anonymous.should.have.property('modelName', 'Anonymous');
|
||||||
|
|
||||||
|
var m1 = new models.anonymous({title: 'Test'});
|
||||||
|
m1.should.have.property('title', 'Test');
|
||||||
|
|
||||||
|
models = loadSchemasSync(path.join(__dirname, 'test2-schemas.json'));
|
||||||
|
models.should.have.property('address');
|
||||||
|
models.should.have.property('account');
|
||||||
|
models.should.have.property('customer');
|
||||||
|
for (var s in models) {
|
||||||
|
var m = models[s];
|
||||||
|
console.log(m.modelName, new m());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"title": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"type": "String",
|
||||||
|
"default": "Raymond"
|
||||||
|
},
|
||||||
|
"body": "String",
|
||||||
|
"date": {
|
||||||
|
"type": "Date"
|
||||||
|
},
|
||||||
|
"hidden": "Boolean",
|
||||||
|
"comments": ["String"]
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Address",
|
||||||
|
"properties": {
|
||||||
|
"label": "string",
|
||||||
|
"street": "string",
|
||||||
|
"city": "string",
|
||||||
|
"zipCode": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Account",
|
||||||
|
"properties": {
|
||||||
|
"id": "string",
|
||||||
|
"customer": {
|
||||||
|
"type": "Customer",
|
||||||
|
"association": {
|
||||||
|
"type": "belongsTo",
|
||||||
|
"inverse": "account"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"balance": "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Customer",
|
||||||
|
"options": {
|
||||||
|
"oracle": {
|
||||||
|
"owner": "STRONGLOOP",
|
||||||
|
"table": "CUSTOMER"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "number",
|
||||||
|
"id": true,
|
||||||
|
"doc": "Customer ID"
|
||||||
|
},
|
||||||
|
"firstName": {
|
||||||
|
"type": "string",
|
||||||
|
"trim": true,
|
||||||
|
"required": true,
|
||||||
|
"oracle": {
|
||||||
|
"column": "FNAME",
|
||||||
|
"type": "VARCHAR",
|
||||||
|
"length": 32
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastName": {
|
||||||
|
"type": "string",
|
||||||
|
"trim": true,
|
||||||
|
"required": true,
|
||||||
|
"oracle": {
|
||||||
|
"column": "LNAME",
|
||||||
|
"type": "VARCHAR",
|
||||||
|
"length": 32
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vip": {
|
||||||
|
"type": "boolean",
|
||||||
|
"doc": "indicate if the customer is a VIP",
|
||||||
|
"oracle": {
|
||||||
|
"column": "VIP",
|
||||||
|
"type": "CHAR",
|
||||||
|
"length": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emails": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"trim": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"address": {
|
||||||
|
"type": "Address"
|
||||||
|
},
|
||||||
|
"account": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
Loading…
Reference in New Issue