Sets the defaultSchemas keys in the SchemaCollection (#1421)
* Sets the defaultSchemas keys in the SchemaCollection * Moves defaultSchema injection logic to router * maps outside the function * fixes test * conciseness
This commit is contained in:
@@ -326,6 +326,35 @@ describe('schemas', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('responds with all fields when getting incomplete schema', done => {
|
||||||
|
config.database.schemaCollection().then((schema) => {
|
||||||
|
return schema.addSchema('_User');
|
||||||
|
}).then(() => {
|
||||||
|
request.get({
|
||||||
|
url: 'http://localhost:8378/1/schemas/_User',
|
||||||
|
headers: masterKeyHeaders,
|
||||||
|
json: true
|
||||||
|
}, (error, response, body) => {
|
||||||
|
expect(body).toEqual({
|
||||||
|
className: '_User',
|
||||||
|
fields: {
|
||||||
|
objectId: {type: 'String'},
|
||||||
|
updatedAt: {type: 'Date'},
|
||||||
|
createdAt: {type: 'Date'},
|
||||||
|
username: {type: 'String'},
|
||||||
|
password: {type: 'String'},
|
||||||
|
authData: {type: 'Object'},
|
||||||
|
email: {type: 'String'},
|
||||||
|
emailVerified: {type: 'Boolean'},
|
||||||
|
ACL: {type: 'ACL'}
|
||||||
|
},
|
||||||
|
classLevelPermissions: defaultClassLevelPermissions
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
it('lets you specify class name in both places', done => {
|
it('lets you specify class name in both places', done => {
|
||||||
request.post({
|
request.post({
|
||||||
url: 'http://localhost:8378/1/schemas/NewClass',
|
url: 'http://localhost:8378/1/schemas/NewClass',
|
||||||
|
|||||||
@@ -14,9 +14,20 @@ function classNameMismatchResponse(bodyClass, pathClass) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function injectDefaultSchema(schema) {
|
||||||
|
let defaultSchema = Schema.defaultColumns[schema.className];
|
||||||
|
if (defaultSchema) {
|
||||||
|
Object.keys(defaultSchema).forEach((key) => {
|
||||||
|
schema.fields[key] = defaultSchema[key];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return schema;
|
||||||
|
}
|
||||||
|
|
||||||
function getAllSchemas(req) {
|
function getAllSchemas(req) {
|
||||||
return req.config.database.schemaCollection()
|
return req.config.database.schemaCollection()
|
||||||
.then(collection => collection.getAllSchemas())
|
.then(collection => collection.getAllSchemas())
|
||||||
|
.then(schemas => schemas.map(injectDefaultSchema))
|
||||||
.then(schemas => ({ response: { results: schemas } }));
|
.then(schemas => ({ response: { results: schemas } }));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,6 +35,7 @@ function getOneSchema(req) {
|
|||||||
const className = req.params.className;
|
const className = req.params.className;
|
||||||
return req.config.database.schemaCollection()
|
return req.config.database.schemaCollection()
|
||||||
.then(collection => collection.findSchema(className))
|
.then(collection => collection.findSchema(className))
|
||||||
|
.then(injectDefaultSchema)
|
||||||
.then(schema => ({ response: schema }))
|
.then(schema => ({ response: schema }))
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (error === undefined) {
|
if (error === undefined) {
|
||||||
|
|||||||
@@ -848,4 +848,5 @@ export {
|
|||||||
schemaAPITypeToMongoFieldType,
|
schemaAPITypeToMongoFieldType,
|
||||||
buildMergedSchemaObject,
|
buildMergedSchemaObject,
|
||||||
systemClasses,
|
systemClasses,
|
||||||
|
defaultColumns,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user