Refactor default value for select (#5343)

In this PR, we are refactoring two things:
- leverage field.defaultValue for Select and MultiSelect settings form
(instead of option.isDefault)
- use quoted string (ex: "'USD'") for string default values to embrace
backend format

---------

Co-authored-by: Thaïs Guigon <guigon.thais@gmail.com>
This commit is contained in:
Charles Bochet
2024-05-10 10:26:46 +02:00
committed by GitHub
parent 7728c09dba
commit 8590bd7227
40 changed files with 843 additions and 559 deletions

View File

@ -0,0 +1,11 @@
import { applySimpleQuotesToString } from '../applySimpleQuotesToString';
describe('applySimpleQuotesToString', () => {
it('wraps the input string with single quotes', () => {
const input = 'Hello, World!';
const result = applySimpleQuotesToString(input);
expect(result).toBe(`'${input}'`);
});
});

View File

@ -0,0 +1,32 @@
import { stripSimpleQuotesFromString } from '../stripSimpleQuotesFromString';
describe('stripSimpleQuotesFromString', () => {
it('removes surrounding single quotes from a string', () => {
// Given
const input = "'Hello, World!'";
// When
const output = stripSimpleQuotesFromString(input);
// Then
expect(output).toBe('Hello, World!');
});
it.each([
// Given
['no simple quotes'],
["'only at start"],
["only at end'"],
["mid'dle"],
[''],
])(
'returns the input without changes if the string does not start and end with single quotes (%s)',
(input) => {
// When
const output = stripSimpleQuotesFromString(input);
// Then
expect(output).toBe(input);
},
);
});

View File

@ -0,0 +1,3 @@
export const applySimpleQuotesToString = <T extends string>(
value: T,
): `'${T}'` => `'${value}'`;

View File

@ -0,0 +1,8 @@
import { simpleQuotesStringSchema } from '~/utils/validation-schemas/simpleQuotesStringSchema';
export const stripSimpleQuotesFromString = <Input extends string>(
value: Input,
) =>
(simpleQuotesStringSchema.safeParse(value).success
? value.slice(1, -1)
: value) as Input extends `'${infer Output}'` ? Output : Input;