/** * Storage root-directory resolution from `StorageOptions`. * * `storage: { type: 'filesystem', path: '…' }` is a widely-used, doc-promoted * config shape. A refactor once dropped the top-level `path` key from the * resolution chain, so it was silently ignored and every brain wrote to the * default `./brainy-data` instead — a quiet data-misplacement footgun on * upgrade. These tests pin every accepted spelling to the directory it must * resolve to. */ import { describe, it, expect } from 'vitest' import { createStorage } from '../../../src/storage/storageFactory.js' /** Read the resolved root directory off the concrete FileSystemStorage. */ function rootDirOf(storage: unknown): string { return (storage as { rootDir: string }).rootDir } describe('createStorage — filesystem root-directory resolution', () => { it('honors top-level rootDirectory', async () => { const storage = await createStorage({ type: 'filesystem', rootDirectory: '/tmp/brainy-rd' }) expect(rootDirOf(storage)).toBe('/tmp/brainy-rd') }) it('honors top-level path (the documented shorthand)', async () => { const storage = await createStorage({ type: 'filesystem', path: '/tmp/brainy-path' }) expect(rootDirOf(storage)).toBe('/tmp/brainy-path') }) it('honors nested options.rootDirectory', async () => { const storage = await createStorage({ type: 'filesystem', options: { rootDirectory: '/tmp/brainy-ord' } }) expect(rootDirOf(storage)).toBe('/tmp/brainy-ord') }) it('honors nested options.path', async () => { const storage = await createStorage({ type: 'filesystem', options: { path: '/tmp/brainy-opath' } }) expect(rootDirOf(storage)).toBe('/tmp/brainy-opath') }) it('prefers top-level rootDirectory over a nested options.path', async () => { const storage = await createStorage({ type: 'filesystem', rootDirectory: '/tmp/brainy-win', options: { path: '/tmp/brainy-lose' } }) expect(rootDirOf(storage)).toBe('/tmp/brainy-win') }) it('falls back to ./brainy-data only when no directory is supplied', async () => { const storage = await createStorage({ type: 'filesystem' }) expect(rootDirOf(storage)).toBe('./brainy-data') }) })