diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js index ddcaee7b5f..d8bbcad185 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js @@ -331,6 +331,7 @@ const forms = { const nameValue = get(data, 'name', null); const relationItems = [ [fields.divider], + [fields.private], [fields.unique], [ { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/tests/forms.test.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/tests/forms.test.js new file mode 100644 index 0000000000..85d3f8fa48 --- /dev/null +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/tests/forms.test.js @@ -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(); + }); +}); diff --git a/packages/strapi-plugin-content-type-builder/test/content-types.test.e2e.js b/packages/strapi-plugin-content-type-builder/test/content-types.test.e2e.js index a7d06a95e0..ae5112c9ef 100644 --- a/packages/strapi-plugin-content-type-builder/test/content-types.test.e2e.js +++ b/packages/strapi-plugin-content-type-builder/test/content-types.test.e2e.js @@ -189,4 +189,47 @@ describe('Content Type Builder - Content types', () => { 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(); + }); + }); }); diff --git a/packages/strapi-plugin-content-type-builder/utils/attributes.js b/packages/strapi-plugin-content-type-builder/utils/attributes.js index bd265daa60..9be70b12c8 100644 --- a/packages/strapi-plugin-content-type-builder/utils/attributes.js +++ b/packages/strapi-plugin-content-type-builder/utils/attributes.js @@ -85,6 +85,7 @@ const formatAttribute = (key, attribute, { model }) => { ['attributes', attribute.via, 'columnName'], undefined ), + private: attribute.private ? true : false, unique: attribute.unique ? true : false, autoPopulate: attribute.autoPopulate, };