**feat(tests, docs): add test coverage for database operations and vector dimension standardization**
- **Tests**:
- Introduced `database-operations.test.ts` to validate core database functionalities, including initialization, CRUD operations, statistics retrieval, and search capabilities.
- Added `dimension-standardization.test.ts` to ensure vector dimension consistency (fixed at 512) throughout operations like embedding, configuration, and validation.
- Enhanced test cases to include scenarios for adding, retrieving, and handling errors for incorrect vector dimensions.
- **Documentation**:
- Created `VECTOR_DIMENSION_STANDARDIZATION.md` to detail the transition to standardizing vectors to 512 dimensions, rationale for the change, potential impacts, and migration steps.
- Includes best practices for handling vectors and utilizing the built-in embedding functions.
**Purpose**: Improve system robustness with comprehensive test coverage focusing on critical database and vector operations while providing clear documentation for developers to adapt to the standardized vector dimensions.
2025-07-25 13:45:44 -07:00
|
|
|
import { describe, it, expect } from 'vitest'
|
2025-07-28 16:00:05 -07:00
|
|
|
import { BrainyData } from '../dist/unified.js'
|
**feat(tests, docs): add test coverage for database operations and vector dimension standardization**
- **Tests**:
- Introduced `database-operations.test.ts` to validate core database functionalities, including initialization, CRUD operations, statistics retrieval, and search capabilities.
- Added `dimension-standardization.test.ts` to ensure vector dimension consistency (fixed at 512) throughout operations like embedding, configuration, and validation.
- Enhanced test cases to include scenarios for adding, retrieving, and handling errors for incorrect vector dimensions.
- **Documentation**:
- Created `VECTOR_DIMENSION_STANDARDIZATION.md` to detail the transition to standardizing vectors to 512 dimensions, rationale for the change, potential impacts, and migration steps.
- Includes best practices for handling vectors and utilizing the built-in embedding functions.
**Purpose**: Improve system robustness with comprehensive test coverage focusing on critical database and vector operations while providing clear documentation for developers to adapt to the standardized vector dimensions.
2025-07-25 13:45:44 -07:00
|
|
|
|
|
|
|
|
describe('Database Operations', () => {
|
|
|
|
|
let db: BrainyData
|
|
|
|
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
|
|
db = new BrainyData()
|
|
|
|
|
await db.init()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should initialize and return database status', async () => {
|
|
|
|
|
const status = await db.status()
|
|
|
|
|
expect(status).toBeDefined()
|
|
|
|
|
// The structure of status might vary, just check it exists
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should return statistics', async () => {
|
|
|
|
|
const stats = await db.getStatistics()
|
|
|
|
|
expect(stats).toBeDefined()
|
|
|
|
|
// The structure of stats might vary, just check it exists
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should retrieve all nouns', async () => {
|
|
|
|
|
const nouns = await db.getAllNouns()
|
|
|
|
|
expect(Array.isArray(nouns)).toBe(true)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should retrieve all verbs', async () => {
|
|
|
|
|
const verbs = await db.getAllVerbs()
|
|
|
|
|
expect(Array.isArray(verbs)).toBe(true)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should perform a search operation', async () => {
|
|
|
|
|
const searchResults = await db.searchText('test', 10)
|
|
|
|
|
expect(Array.isArray(searchResults)).toBe(true)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should add and retrieve an item', async () => {
|
|
|
|
|
// Add a test item
|
|
|
|
|
const testText = 'This is a test item for searching'
|
|
|
|
|
const metadata = { noun: 'Thing', category: 'test' }
|
|
|
|
|
const id = await db.add(testText, metadata)
|
|
|
|
|
|
|
|
|
|
// Verify the item was added
|
|
|
|
|
expect(id).toBeDefined()
|
|
|
|
|
|
|
|
|
|
// Retrieve the item
|
|
|
|
|
const noun = await db.get(id)
|
|
|
|
|
expect(noun).toBeDefined()
|
|
|
|
|
expect(noun.id).toBe(id)
|
|
|
|
|
|
|
|
|
|
// Check that the metadata contains our properties
|
|
|
|
|
// (The system might add additional properties)
|
|
|
|
|
expect(noun.metadata.category).toBe('test')
|
|
|
|
|
|
|
|
|
|
// Search for the item
|
|
|
|
|
const searchResults = await db.searchText('test', 10)
|
|
|
|
|
expect(searchResults.length).toBeGreaterThan(0)
|
|
|
|
|
|
|
|
|
|
// Clean up
|
|
|
|
|
await db.delete(id)
|
|
|
|
|
})
|
2025-07-28 16:00:05 -07:00
|
|
|
})
|