import assert from 'node:assert/strict'; import test from 'node:test'; import { createSellerSettingsService } from '../../src/modules/settings/services/seller-settings-service.js'; test('merges validated seller settings without replacing other categories', async () => { let stored = null; const service = createSellerSettingsService({ sellerSettingsRepository: { async findBySellerId() { return stored; }, async upsert(sellerId, settings) { stored = { sellerId, settings }; return stored; }, }, }); await service.update({ sellerId: 'seller-1', settings: { pricing: { defaultStrategy: 'median' }, general: { publicContactEmail: 'owner@example.test' } }, }); const result = await service.update({ sellerId: 'seller-1', settings: { inventory: { maxImagesPerItem: 12 } }, }); assert.deepEqual(result, { pricing: { defaultStrategy: 'median' }, general: { publicContactEmail: 'owner@example.test' }, inventory: { maxImagesPerItem: 12 }, }); }); test('rejects unknown or invalid settings', async () => { const service = createSellerSettingsService({ sellerSettingsRepository: { async findBySellerId() { return null; } }, }); await assert.rejects( () => service.update({ sellerId: 'seller-1', settings: { secrets: { token: 'nope' } } }), ); }); test('seller descriptions are trimmed, bounded, preserved on partial updates and clearable', async () => { let stored; const service = createSellerSettingsService({ sellerSettingsRepository: { async findBySellerId() { return stored; }, async upsert(sellerId, settings) { stored = { sellerId, settings }; return stored; }, } }); const update = (general) => service.update({ sellerId: 'seller-1', settings: { general } }); assert.equal((await update({ publicDescription: ' Collector. ' })).general.publicDescription, 'Collector.'); assert.equal((await update({ publicContactPhone: '555-0100' })).general.publicDescription, 'Collector.'); await assert.rejects(() => update({ publicDescription: 'x'.repeat(2001) })); await assert.rejects(() => update({ publicDescription: 123 })); assert.equal((await update({ publicDescription: 'x'.repeat(2000) })).general.publicDescription.length, 2000); assert.equal((await update({ publicDescription: ' ' })).general.publicDescription, ''); });