mirror of
https://github.com/strapi/strapi.git
synced 2025-10-30 01:17:28 +00:00
Test custom field exists
This commit is contained in:
parent
05c8b0f66e
commit
6456a33bf1
@ -70,10 +70,6 @@ const formatAttribute = (key, attribute) => {
|
|||||||
if (attribute.type === 'customField') {
|
if (attribute.type === 'customField') {
|
||||||
const customField = strapi.container.get('custom-fields').get(attribute.customField);
|
const customField = strapi.container.get('custom-fields').get(attribute.customField);
|
||||||
|
|
||||||
if (!customField) {
|
|
||||||
throw new Error(`Could not find Custom Field: ${attribute.customField}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...attribute,
|
...attribute,
|
||||||
type: customField.type,
|
type: customField.type,
|
||||||
|
|||||||
@ -8,99 +8,123 @@ const strapi = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('Custom fields registry', () => {
|
describe('Custom fields registry', () => {
|
||||||
it('adds a custom field registered in a plugin', () => {
|
describe('add', () => {
|
||||||
const mockCF = {
|
it('adds a custom field registered in a plugin', () => {
|
||||||
name: 'test',
|
const mockCF = {
|
||||||
plugin: 'plugintest',
|
name: 'test',
|
||||||
type: 'text',
|
plugin: 'plugintest',
|
||||||
};
|
type: 'text',
|
||||||
|
};
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
const customFields = customFieldsRegistry(strapi);
|
||||||
customFields.add(mockCF);
|
customFields.add(mockCF);
|
||||||
|
|
||||||
const expected = {
|
const expected = {
|
||||||
'plugin::plugintest.test': mockCF,
|
'plugin::plugintest.test': mockCF,
|
||||||
};
|
};
|
||||||
expect(customFields.getAll()).toEqual(expected);
|
expect(customFields.getAll()).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('adds a custom field not registered in a plugin', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test',
|
||||||
|
type: 'text',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
customFields.add(mockCF);
|
||||||
|
|
||||||
|
const expected = {
|
||||||
|
'global::test': mockCF,
|
||||||
|
};
|
||||||
|
expect(customFields.getAll()).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('requires a name key on the custom field', () => {
|
||||||
|
const mockCF = {
|
||||||
|
type: 'test',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
|
||||||
|
expect(() => customFields.add(mockCF)).toThrowError(
|
||||||
|
`Custom fields require a 'name' and 'type' key`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('requires a type key on the custom field', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
|
||||||
|
expect(() => customFields.add(mockCF)).toThrowError(
|
||||||
|
`Custom fields require a 'name' and 'type' key`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('validates the name can be used as an object key', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test.boom',
|
||||||
|
type: 'text',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
|
||||||
|
expect(() => customFields.add(mockCF)).toThrowError(
|
||||||
|
`Custom field name: 'test.boom' is not a valid object key`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('validates the type is a Strapi type', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test',
|
||||||
|
type: 'geojson',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
|
||||||
|
expect(() => customFields.add(mockCF)).toThrowError(
|
||||||
|
`Custom field type: 'geojson' is not a valid Strapi type`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('confirms the custom field does not already exist', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test',
|
||||||
|
plugin: 'plugintest',
|
||||||
|
type: 'text',
|
||||||
|
};
|
||||||
|
|
||||||
|
const customFields = customFieldsRegistry(strapi);
|
||||||
|
|
||||||
|
customFields.add(mockCF);
|
||||||
|
expect(() => customFields.add(mockCF)).toThrowError(
|
||||||
|
`Custom field: 'plugin::plugintest.test' has already been registered`
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
describe('get', () => {
|
||||||
|
it('gets a registered custom field', () => {
|
||||||
|
const mockCF = {
|
||||||
|
name: 'test',
|
||||||
|
plugin: 'plugintest',
|
||||||
|
type: 'text',
|
||||||
|
};
|
||||||
|
|
||||||
it('adds a custom field not registered in a plugin', () => {
|
const customFields = customFieldsRegistry(strapi);
|
||||||
const mockCF = {
|
customFields.add(mockCF);
|
||||||
name: 'test',
|
|
||||||
type: 'text',
|
|
||||||
};
|
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
expect(customFields.get('plugin::plugintest.test')).toEqual(mockCF);
|
||||||
customFields.add(mockCF);
|
});
|
||||||
|
|
||||||
const expected = {
|
it('throws when a custom field is not registered', () => {
|
||||||
'global::test': mockCF,
|
const customFields = customFieldsRegistry(strapi);
|
||||||
};
|
|
||||||
expect(customFields.getAll()).toEqual(expected);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('requires a name key on the custom field', () => {
|
expect(() => customFields.get('plugin::plugintest.test')).toThrowError(
|
||||||
const mockCF = {
|
`Could not find Custom Field: plugin::plugintest.test`
|
||||||
type: 'test',
|
);
|
||||||
};
|
});
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
|
||||||
|
|
||||||
expect(() => customFields.add(mockCF)).toThrowError(
|
|
||||||
`Custom fields require a 'name' and 'type' key`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('requires a type key on the custom field', () => {
|
|
||||||
const mockCF = {
|
|
||||||
name: 'test',
|
|
||||||
};
|
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
|
||||||
|
|
||||||
expect(() => customFields.add(mockCF)).toThrowError(
|
|
||||||
`Custom fields require a 'name' and 'type' key`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('validates the name can be used as an object key', () => {
|
|
||||||
const mockCF = {
|
|
||||||
name: 'test.boom',
|
|
||||||
type: 'text',
|
|
||||||
};
|
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
|
||||||
|
|
||||||
expect(() => customFields.add(mockCF)).toThrowError(
|
|
||||||
`Custom field name: 'test.boom' is not a valid object key`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('validates the type is a Strapi type', () => {
|
|
||||||
const mockCF = {
|
|
||||||
name: 'test',
|
|
||||||
type: 'geojson',
|
|
||||||
};
|
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
|
||||||
|
|
||||||
expect(() => customFields.add(mockCF)).toThrowError(
|
|
||||||
`Custom field type: 'geojson' is not a valid Strapi type`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('confirms the custom field does not already exist', () => {
|
|
||||||
const mockCF = {
|
|
||||||
name: 'test',
|
|
||||||
plugin: 'plugintest',
|
|
||||||
type: 'text',
|
|
||||||
};
|
|
||||||
|
|
||||||
const customFields = customFieldsRegistry(strapi);
|
|
||||||
|
|
||||||
customFields.add(mockCF);
|
|
||||||
expect(() => customFields.add(mockCF)).toThrowError(
|
|
||||||
`Custom field: 'plugin::plugintest.test' has already been registered`
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -11,7 +11,12 @@ const customFieldsRegistry = strapi => {
|
|||||||
return customFields;
|
return customFields;
|
||||||
},
|
},
|
||||||
get(customField) {
|
get(customField) {
|
||||||
return customFields[customField];
|
const registeredCustomField = customFields[customField];
|
||||||
|
if (!registeredCustomField) {
|
||||||
|
throw new Error(`Could not find Custom Field: ${customField}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return registeredCustomField;
|
||||||
},
|
},
|
||||||
add(customField) {
|
add(customField) {
|
||||||
const customFieldList = Array.isArray(customField) ? customField : [customField];
|
const customFieldList = Array.isArray(customField) ? customField : [customField];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user