diff --git a/src/__tests__/core/strategies/ArrayNamingStrategy.test.ts b/src/__tests__/core/strategies/ArrayNamingStrategy.test.ts index 93d9fce..494be6f 100644 --- a/src/__tests__/core/strategies/ArrayNamingStrategy.test.ts +++ b/src/__tests__/core/strategies/ArrayNamingStrategy.test.ts @@ -109,4 +109,27 @@ describe('ArrayNamingStrategy Integration', () => { const result = formatter.generateFrontmatter(singleContact, 'contact_'); expect(result.contact_relations).toEqual('SingleRel (partner)'); }); + + it('should format addresses as an array', () => { + const contactWithAddresses = { + ...contact, + addresses: [ + { formattedValue: '123 Main St' }, + { formattedValue: '456 Second St' } + ] + } as GoogleContact; + const result = formatter.generateFrontmatter(contactWithAddresses, 'contact_'); + expect(result.contact_address).toEqual(['123 Main St', '456 Second St']); + }); + + it('should format single address as string', () => { + const contactWithSingleAddress = { + ...contact, + addresses: [ + { formattedValue: '123 Main St' } + ] + } as GoogleContact; + const result = formatter.generateFrontmatter(contactWithSingleAddress, 'contact_'); + expect(result.contact_address).toEqual('123 Main St'); + }); }); diff --git a/src/core/adapters/AddressAdapter.ts b/src/core/adapters/AddressAdapter.ts index 97efd69..f34c966 100644 --- a/src/core/adapters/AddressAdapter.ts +++ b/src/core/adapters/AddressAdapter.ts @@ -61,6 +61,26 @@ export class AddressAdapter implements FieldAdapter { }); return results; + } else if (context?.namingStrategy === NamingStrategy.Array) { + // For Array strategy, return array of formatted values + // If only one address, return as string + const addressValues = addresses + .map((item) => item.formattedValue) + .filter((val): val is string => !!val); + + if (addressValues.length === 0) { + return []; + } + + const first = addressValues[0]; + return [ + { + value: + addressValues.length === 1 && first !== undefined + ? first + : addressValues, + }, + ]; } else { // For Default strategy, return formattedValue as before return addresses