Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
25 KiB
Plaintext
1 line
25 KiB
Plaintext
{"version":3,"sources":["../../src/utilities/mergeLocalizedData.spec.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { mergeLocalizedData } from './mergeLocalizedData.js'\n\ndescribe('mergeLocalizedData', () => {\n const selectedLocales = ['en']\n const configBlockReferences = []\n\n describe('simple fields', () => {\n it('should merge localized field values for selected locales', () => {\n const fields: Field[] = [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ]\n\n const docWithLocales = {\n title: {\n en: 'English Title',\n es: 'Spanish Title',\n de: 'German Title',\n },\n }\n\n const dataWithLocales = {\n title: {\n en: 'Updated English Title',\n es: 'Updated Spanish Title',\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.title).toEqual({\n en: 'Updated English Title',\n es: 'Spanish Title',\n de: 'German Title',\n })\n })\n\n it('should keep doc value for non-localized fields', () => {\n const fields: Field[] = [\n {\n name: 'title',\n type: 'text',\n localized: false,\n },\n ]\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales: {\n title: 'New Title',\n },\n docWithLocales: {\n title: 'Old Title',\n },\n fields,\n selectedLocales,\n })\n\n expect(result.title).toBe('New Title')\n\n const missingData = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales: {},\n docWithLocales: {\n title: 'Old Title',\n },\n fields,\n selectedLocales,\n })\n\n expect(missingData.title).toBe('Old Title')\n\n const updatedData = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales: {\n title: 'Updated Title',\n },\n docWithLocales: {},\n fields,\n selectedLocales,\n })\n\n expect(updatedData.title).toBe('Updated Title')\n })\n })\n\n describe('groups', () => {\n it('should merge localized group with locale keys at top level', () => {\n const fields: Field[] = [\n {\n name: 'meta',\n type: 'group',\n localized: true,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'description',\n type: 'text',\n },\n ],\n },\n ]\n\n const docWithLocales = {\n meta: {\n en: {\n title: 'EN Title',\n description: 'EN Desc',\n },\n es: {\n title: 'ES Title',\n description: 'ES Desc',\n },\n },\n }\n\n const dataWithLocales = {\n meta: {\n en: {\n title: 'Updated EN Title',\n description: 'Updated EN Desc',\n },\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.meta).toEqual({\n en: {\n title: 'Updated EN Title',\n description: 'Updated EN Desc',\n },\n es: {\n title: 'ES Title',\n description: 'ES Desc',\n },\n })\n })\n\n it('should handle non-localized group with localized children', () => {\n const fields: Field[] = [\n {\n name: 'meta',\n type: 'group',\n localized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n {\n name: 'version',\n type: 'number',\n localized: false,\n },\n ],\n },\n ]\n\n const docWithLocales = {\n meta: {\n title: {\n en: 'EN Title',\n es: 'ES Title',\n },\n version: 1,\n },\n }\n\n const dataWithLocales = {\n meta: {\n title: {\n en: 'Updated EN Title',\n },\n version: 2,\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.meta).toEqual({\n title: {\n en: 'Updated EN Title',\n es: 'ES Title',\n },\n version: 2,\n })\n })\n })\n\n describe('arrays', () => {\n it('should merge localized array with locale keys at top level', () => {\n const fields: Field[] = [\n {\n name: 'items',\n type: 'array',\n localized: true,\n fields: [\n {\n name: 'name',\n type: 'text',\n },\n ],\n },\n ]\n\n const docWithLocales = {\n items: {\n en: [{ name: 'EN Item 1' }, { name: 'EN Item 2' }],\n es: [{ name: 'ES Item 1' }],\n },\n }\n\n const dataWithLocales = {\n items: {\n en: [{ name: 'Updated EN Item 1' }, { name: 'Updated EN Item 2' }],\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.items).toEqual({\n en: [{ name: 'Updated EN Item 1' }, { name: 'Updated EN Item 2' }],\n es: [{ name: 'ES Item 1' }],\n })\n })\n\n it('should handle non-localized array with localized children', () => {\n const fields: Field[] = [\n {\n name: 'items',\n type: 'array',\n localized: false,\n fields: [\n {\n name: 'name',\n type: 'text',\n localized: true,\n },\n ],\n },\n ]\n\n const docWithLocales = {\n items: [\n {\n name: {\n en: 'EN Item 1',\n es: 'ES Item 1',\n },\n },\n {\n name: {\n en: 'EN Item 2',\n es: 'ES Item 2',\n },\n },\n ],\n }\n\n const dataWithLocales = {\n items: [\n {\n name: {\n en: 'Updated EN Item 1',\n },\n },\n {\n name: {\n en: 'Updated EN Item 2',\n },\n },\n ],\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.items).toEqual([\n {\n name: {\n en: 'Updated EN Item 1',\n es: 'ES Item 1',\n },\n },\n {\n name: {\n en: 'Updated EN Item 2',\n es: 'ES Item 2',\n },\n },\n ])\n })\n })\n\n describe('blocks', () => {\n it('should merge localized blocks with locale keys at top level', () => {\n const fields: Field[] = [\n {\n name: 'content',\n type: 'blocks',\n localized: true,\n blocks: [\n {\n slug: 'text',\n fields: [\n {\n name: 'text',\n type: 'text',\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n content: {\n en: [{ blockType: 'text', text: 'EN Text' }],\n es: [{ blockType: 'text', text: 'ES Text' }],\n },\n }\n\n const dataWithLocales = {\n content: {\n en: [{ blockType: 'text', text: 'Updated EN Text' }],\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.content).toEqual({\n en: [{ blockType: 'text', text: 'Updated EN Text' }],\n es: [{ blockType: 'text', text: 'ES Text' }],\n })\n })\n\n it('should handle blocks with nested arrays', () => {\n const fields: Field[] = [\n {\n name: 'content',\n type: 'blocks',\n localized: true,\n blocks: [\n {\n slug: 'nested',\n fields: [\n {\n name: 'items',\n type: 'array',\n fields: [\n {\n name: 'name',\n type: 'text',\n },\n ],\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n content: {\n en: [\n {\n blockType: 'nested',\n items: [{ name: 'EN Item 1' }],\n },\n ],\n es: [\n {\n blockType: 'nested',\n items: [{ name: 'ES Item 1' }],\n },\n ],\n },\n }\n\n const dataWithLocales = {\n content: {\n en: [\n {\n blockType: 'nested',\n items: [{ name: 'Updated EN Item 1' }],\n },\n ],\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.content).toEqual({\n en: [\n {\n blockType: 'nested',\n items: [{ name: 'Updated EN Item 1' }],\n },\n ],\n es: [\n {\n blockType: 'nested',\n items: [{ name: 'ES Item 1' }],\n },\n ],\n })\n })\n })\n\n describe('tabs', () => {\n it('should merge localized named tabs with locale keys at top level', () => {\n const fields: Field[] = [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'meta',\n localized: true,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n meta: {\n en: {\n title: 'EN Title',\n },\n es: {\n title: 'ES Title',\n },\n },\n }\n\n const dataWithLocales = {\n meta: {\n en: {\n title: 'Updated EN Title',\n },\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.meta).toEqual({\n en: {\n title: 'Updated EN Title',\n },\n es: {\n title: 'ES Title',\n },\n })\n })\n\n it('should handle unnamed tabs with localized fields', () => {\n const fields: Field[] = [\n {\n type: 'tabs',\n tabs: [\n {\n label: 'tab1',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n title: {\n en: 'EN Title',\n es: 'ES Title',\n },\n }\n\n const dataWithLocales = {\n title: {\n en: 'Updated EN Title',\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.title).toEqual({\n en: 'Updated EN Title',\n es: 'ES Title',\n })\n })\n })\n\n describe('deeply nested structures', () => {\n it('should handle multiple levels of nesting with locale keys only at topmost localized field', () => {\n const fields: Field[] = [\n {\n name: 'outer',\n type: 'group',\n localized: true,\n fields: [\n {\n name: 'inner',\n type: 'group',\n localized: false,\n fields: [\n {\n name: 'items',\n type: 'array',\n localized: false,\n fields: [\n {\n name: 'text',\n type: 'text',\n localized: false,\n },\n ],\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n outer: {\n en: {\n inner: {\n items: [{ text: 'EN Item 1' }],\n },\n },\n es: {\n inner: {\n items: [{ text: 'ES Item 1' }],\n },\n },\n },\n }\n\n const dataWithLocales = {\n outer: {\n en: {\n inner: {\n items: [{ text: 'Updated EN Item 1' }],\n },\n },\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales,\n })\n\n expect(result.outer).toEqual({\n en: {\n inner: {\n items: [{ text: 'Updated EN Item 1' }],\n },\n },\n es: {\n inner: {\n items: [{ text: 'ES Item 1' }],\n },\n },\n })\n })\n })\n\n describe('multiple selected locales', () => {\n it('should merge multiple locales when selected', () => {\n const fields: Field[] = [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ]\n\n const docWithLocales = {\n title: {\n en: 'EN Title',\n es: 'ES Title',\n de: 'DE Title',\n fr: 'FR Title',\n },\n }\n\n const dataWithLocales = {\n title: {\n en: 'Updated EN Title',\n es: 'Updated ES Title',\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales: ['en', 'es'],\n })\n\n expect(result.title).toEqual({\n en: 'Updated EN Title',\n es: 'Updated ES Title',\n de: 'DE Title',\n fr: 'FR Title',\n })\n })\n })\n\n describe('pass through fields, rows, collapsibles, unnamed tabs, unnamed groups', () => {\n it('should not lose merged locale data when processing unnamed tabs', () => {\n const fields: Field[] = [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n {\n type: 'tabs',\n tabs: [\n {\n label: 'Other Fields',\n fields: [\n {\n name: 'description',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n },\n ]\n\n const docWithLocales = {\n title: {\n en: 'English Title',\n },\n description: {\n en: 'English Description',\n },\n }\n\n const dataWithLocales = {\n title: {\n en: 'English Title',\n es: 'Spanish Title',\n },\n description: {\n en: 'English Description',\n es: 'Spanish Description',\n },\n }\n\n const result = mergeLocalizedData({\n configBlockReferences: [],\n dataWithLocales,\n docWithLocales,\n fields,\n selectedLocales: ['es'],\n })\n\n expect(result.title).toEqual({\n en: 'English Title',\n es: 'Spanish Title',\n })\n\n expect(result.description).toEqual({\n en: 'English Description',\n es: 'Spanish Description',\n })\n })\n })\n})\n"],"names":["describe","expect","it","mergeLocalizedData","selectedLocales","configBlockReferences","fields","name","type","localized","docWithLocales","title","en","es","de","dataWithLocales","result","toEqual","toBe","missingData","updatedData","meta","description","version","items","blocks","slug","content","blockType","text","tabs","label","outer","inner","fr"],"mappings":"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"} |