Feat: Add private option field for relations (#8149)

* feat(content-type): add private option to relation field

Signed-off-by: tanmoyopenroot <tanmoy.openroot@gmail.com>

* test(content-type): add test for private option in relation field

Signed-off-by: tanmoyopenroot <tanmoy.openroot@gmail.com>
This commit is contained in:
Tanmoy Bhowmik 2020-10-02 18:50:37 +05:30 committed by GitHub
parent 4844ba9ebe
commit 012902d94f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 0 deletions

View File

@ -331,6 +331,7 @@ const forms = {
const nameValue = get(data, 'name', null); const nameValue = get(data, 'name', null);
const relationItems = [ const relationItems = [
[fields.divider], [fields.divider],
[fields.private],
[fields.unique], [fields.unique],
[ [
{ {

View File

@ -0,0 +1,11 @@
import fields from '../forms';
describe('forms', () => {
it('should contain private field in relation input type', () => {
const { items } = fields.attribute.form.advanced({}, 'relation', null);
expect(
items.find(relationItem => relationItem.find(item => item.name === 'private')).length
).toBeTruthy();
});
});

View File

@ -189,4 +189,47 @@ describe('Content Type Builder - Content types', () => {
expect(updateRes.body.error).toMatch('multiple entries in DB'); expect(updateRes.body.error).toMatch('multiple entries in DB');
}); });
}); });
describe('Private relation field', () => {
const singleTypeUID = 'application::test-single-type.test-single-type';
test('should add a relation field', async () => {
const res = await rq({
method: 'PUT',
url: `/content-type-builder/content-types/${singleTypeUID}`,
body: {
contentType: {
kind: 'singleType',
name: 'test-collection',
attributes: {
relation: {
private: true,
nature: 'oneWay',
target: 'plugins::users-permissions.user',
targetAttribute: 'test',
},
},
},
},
});
expect(res.statusCode).toBe(201);
expect(res.body).toEqual({
data: {
uid: singleTypeUID,
},
});
});
test('should contain a private relation field', async () => {
const res = await rq({
method: 'GET',
url: `/content-type-builder/content-types/${singleTypeUID}`,
});
expect(res.statusCode).toBe(200);
expect(res.body.data.schema.attributes.relation).toBeDefined();
expect(res.body.data.schema.attributes.relation.private).toBeTruthy();
});
});
}); });

View File

@ -85,6 +85,7 @@ const formatAttribute = (key, attribute, { model }) => {
['attributes', attribute.via, 'columnName'], ['attributes', attribute.via, 'columnName'],
undefined undefined
), ),
private: attribute.private ? true : false,
unique: attribute.unique ? true : false, unique: attribute.unique ? true : false,
autoPopulate: attribute.autoPopulate, autoPopulate: attribute.autoPopulate,
}; };