Skip to content

Commit

Permalink
Fix nullable being set to null for text field (#4239)
Browse files Browse the repository at this point in the history
  • Loading branch information
charlesBochet authored Feb 29, 2024
1 parent f34a430 commit f52a414
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { UpdateFieldInput } from 'src/metadata/field-metadata/dtos/update-field.
import { WorkspaceMigrationFactory } from 'src/metadata/workspace-migration/workspace-migration.factory';
import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util';
import { generateMigrationName } from 'src/metadata/workspace-migration/utils/generate-migration-name.util';
import { generateNullable } from 'src/metadata/field-metadata/utils/generate-nullable';

import {
FieldMetadataEntity,
Expand Down Expand Up @@ -102,6 +103,10 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
true,
fieldMetadataInput.name,
),
isNullable: generateNullable(
fieldMetadataInput.type,
fieldMetadataInput.isNullable,
),
defaultValue:
fieldMetadataInput.defaultValue ??
generateDefaultValue(fieldMetadataInput.type),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
import { generateNullable } from 'src/metadata/field-metadata/utils/generate-nullable';

describe('generateNullable', () => {
it('should generate a nullable value false for TEXT, EMAIL, PHONE no matter what the input is', () => {
expect(generateNullable(FieldMetadataType.TEXT, false)).toEqual(false);
expect(generateNullable(FieldMetadataType.PHONE, false)).toEqual(false);
expect(generateNullable(FieldMetadataType.EMAIL, false)).toEqual(false);

expect(generateNullable(FieldMetadataType.TEXT, true)).toEqual(false);
expect(generateNullable(FieldMetadataType.PHONE, true)).toEqual(false);
expect(generateNullable(FieldMetadataType.EMAIL, true)).toEqual(false);

expect(generateNullable(FieldMetadataType.TEXT)).toEqual(false);
expect(generateNullable(FieldMetadataType.PHONE)).toEqual(false);
expect(generateNullable(FieldMetadataType.EMAIL)).toEqual(false);
});

it('should should return true if no input is given', () => {
expect(generateNullable(FieldMetadataType.DATE_TIME)).toEqual(true);
});

it('should should return the input value if the input value is given', () => {
expect(generateNullable(FieldMetadataType.DATE_TIME, true)).toEqual(true);
expect(generateNullable(FieldMetadataType.DATE_TIME, false)).toEqual(false);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';

export function generateNullable(
type: FieldMetadataType,
inputNullableValue?: boolean,
): boolean {
switch (type) {
case FieldMetadataType.TEXT:
case FieldMetadataType.PHONE:
case FieldMetadataType.EMAIL:
return false;
default:
return inputNullableValue ?? true;
}
}

0 comments on commit f52a414

Please sign in to comment.