- **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.
64 lines
No EOL
1.8 KiB
TypeScript
64 lines
No EOL
1.8 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { BrainyData } from '../dist/brainyData.js'
|
|
|
|
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)
|
|
})
|
|
}) |