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