[Fix] Object names should be camel cased (#5571)

as per title
This commit is contained in:
Marie 2024-05-25 10:29:00 +02:00 committed by GitHub
parent 936ac4027a
commit def1774bf0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 2 deletions

View File

@ -60,4 +60,26 @@ describe('validateObjectName', () => {
validateObjectMetadataInputOrThrow(invalidObjectInput),
).toThrow();
});
it('should throw if nameSingular is not camelCased', async () => {
const invalidObjectInput = {
...validObjectInput,
nameSingular: 'notACamelCase1a',
};
expect(() =>
validateObjectMetadataInputOrThrow(invalidObjectInput),
).toThrow();
});
it('should throw if namePlural is a not camelCased', async () => {
const invalidObjectInput = {
...validObjectInput,
namePlural: 'notACamelCase1b',
};
expect(() =>
validateObjectMetadataInputOrThrow(invalidObjectInput),
).toThrow();
});
});

View File

@ -4,6 +4,7 @@ import { InvalidStringException } from 'src/engine/metadata-modules/errors/Inval
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
import { UpdateObjectPayload } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
import { validateMetadataName } from 'src/engine/metadata-modules/utils/validate-metadata-name.utils';
import { camelCase } from 'src/utils/camel-case';
const coreObjectNames = [
'appToken',
@ -41,6 +42,9 @@ export const validateObjectMetadataInputOrThrow = <
>(
objectMetadataInput: T,
): void => {
validateNameCamelCasedOrThrow(objectMetadataInput.nameSingular);
validateNameCamelCasedOrThrow(objectMetadataInput.namePlural);
validateNameCharactersOrThrow(objectMetadataInput.nameSingular);
validateNameCharactersOrThrow(objectMetadataInput.namePlural);
@ -56,6 +60,14 @@ const validateNameIsNotReservedKeywordOrThrow = (name?: string) => {
}
};
const validateNameCamelCasedOrThrow = (name?: string) => {
if (name) {
if (name !== camelCase(name)) {
throw new ForbiddenException(`Name should be in camelCase: ${name}`);
}
}
};
const validateNameCharactersOrThrow = (name?: string) => {
try {
if (name) {

View File

@ -416,8 +416,8 @@ export class RemoteTableService {
: plural(localTableBaseName);
const objectMetadata = await this.objectMetadataService.createOne({
nameSingular: localTableNameSingular,
namePlural: localTableNamePlural,
nameSingular: camelCase(localTableNameSingular),
namePlural: camelCase(localTableNamePlural),
labelSingular: camelToTitleCase(camelCase(localTableBaseName)),
labelPlural: camelToTitleCase(plural(camelCase(localTableBaseName))),
description: 'Remote table',