From 756edb858a1ca66c32e674770ddcdceae77bf349 Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Fri, 9 Dec 2022 09:36:39 -0500 Subject: [PATCH] fix: Select with hasMany and localized (#1636) --- src/mongoose/buildSchema.ts | 7 +++++-- test/fields/collections/Select/index.ts | 16 ++++++++++++++++ test/fields/int.spec.ts | 22 ++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/mongoose/buildSchema.ts b/src/mongoose/buildSchema.ts index 4053b49c72..1a860e8a6d 100644 --- a/src/mongoose/buildSchema.ts +++ b/src/mongoose/buildSchema.ts @@ -375,10 +375,13 @@ const fieldToSchemaMap: Record = { return option; }), }; - const schemaToReturn = localizeSchema(field, baseSchema, config.localization); schema.add({ - [field.name]: field.hasMany ? [schemaToReturn] : schemaToReturn, + [field.name]: localizeSchema( + field, + field.hasMany ? [baseSchema] : baseSchema, + config.localization, + ), }); }, blocks: (field: BlockField, schema: Schema, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): void => { diff --git a/test/fields/collections/Select/index.ts b/test/fields/collections/Select/index.ts index e3522c1021..8db2c02b61 100644 --- a/test/fields/collections/Select/index.ts +++ b/test/fields/collections/Select/index.ts @@ -80,6 +80,22 @@ const SelectFields: CollectionConfig = { }, ], }, + { + name: 'selectHasManyLocalized', + type: 'select', + hasMany: true, + localized: true, + options: [ + { + label: 'Value One', + value: 'one', + }, + { + label: 'Value Two', + value: 'two', + }, + ], + }, { name: 'selectI18n', type: 'select', diff --git a/test/fields/int.spec.ts b/test/fields/int.spec.ts index b1aa780b50..09d4a90211 100644 --- a/test/fields/int.spec.ts +++ b/test/fields/int.spec.ts @@ -40,6 +40,28 @@ describe('Fields', () => { }); }); + describe('select', () => { + let doc; + beforeAll(async () => { + const { id } = await payload.create({ + collection: 'select-fields', + locale: 'en', + data: { + selectHasManyLocalized: ['one', 'two'], + }, + }); + doc = await payload.findByID({ + collection: 'select-fields', + locale: 'all', + id, + }); + }); + + it('creates with hasMany localized', () => { + expect(doc.selectHasManyLocalized.en).toEqual(['one', 'two']); + }); + }); + describe('number', () => { let doc; beforeAll(async () => {