feat: rename keep-notes to memento-note, migrate to PostgreSQL, fix MCP bugs

- Rename directory keep-notes -> memento-note with all code references
- Prisma: SQLite -> PostgreSQL (both app and MCP server schemas)
- Sync MCP schema with main app (add missing fields, relations, indexes)
- Delete 17 SQLite migrations (clean slate for PostgreSQL)
- Remove SQLite dependencies (@libsql/client, better-sqlite3, etc.)
- Fix MCP server: hardcoded Windows DB paths -> DATABASE_URL env var
- Fix MCP server: .dockerignore excluded index-sse.js (SSE mode broken)
- MCP Dockerfile: node:20 -> node:22
- Docker Compose: add postgres service, remove SQLite volume
- Generate favicon.ico, icon-192.png, icon-512.png, apple-icon.png
- Update layout.tsx icons and manifest.json for PNG icons
- Update all .env files for PostgreSQL
- Rewrite README.md with updated sections
- Remove mcp-server/node_modules and prisma/client-generated from git tracking

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sepehr Ramezani
2026-04-20 20:58:04 +02:00
parent e2ddfa53d4
commit aa6a214f37
3548 changed files with 440 additions and 516800 deletions

View File

@@ -0,0 +1,156 @@
# Migration Tests
This directory contains comprehensive test suites for validating Prisma schema and data migrations for the Keep notes application.
## Test Files
- **setup.ts** - Test utilities for database setup, teardown, and test data generation
- **schema-migration.test.ts** - Validates schema migrations (tables, columns, indexes, relationships)
- **data-migration.test.ts** - Validates data migration (transformation, integrity, edge cases)
- **rollback.test.ts** - Validates rollback capability and data recovery
- **performance.test.ts** - Validates migration performance with various dataset sizes
- **integrity.test.ts** - Validates data integrity (no loss/corruption, foreign keys, indexes)
## Running Tests
### Run all migration tests
```bash
npm run test:migration
```
### Run migration tests in watch mode
```bash
npm run test:migration:watch
```
### Run specific test file
```bash
npm run test:unit tests/migration/schema-migration.test.ts
```
### Run tests with coverage
```bash
npm run test:unit:coverage
```
## Test Coverage Goals
- **Minimum threshold:** 80% coverage for migration-related code
- **Coverage areas:** Migration scripts, test utilities, schema transformations
- **Exclude from coverage:** Test files themselves (`*.test.ts`)
## Test Structure
### Schema Migration Tests
- Core table existence (User, Note, Notebook, Label, etc.)
- AI feature tables (AiFeedback, MemoryEchoInsight, UserAISettings)
- Note table AI fields (autoGenerated, aiProvider, aiConfidence, etc.)
- Index creation on critical fields
- Foreign key relationships
- Unique constraints
- Default values
### Data Migration Tests
- Empty database migration
- Basic note migration
- AI fields data migration
- AiFeedback data migration
- MemoryEchoInsight data migration
- UserAISettings data migration
- Data integrity verification
- Edge cases (empty strings, long content, special characters)
- Performance benchmarks
### Rollback Tests
- Schema state verification
- Column/table rollback simulation
- Data recovery after rollback
- Orphaned record handling
- Rollback safety checks
- Rollback error handling
### Performance Tests
- Empty migration (< 1 second)
- Small dataset (10 notes) (< 1 second)
- Medium dataset (100 notes) (< 5 seconds)
- Target dataset (1,000 notes) (< 30 seconds)
- Stress test (10,000 notes) (< 30 seconds)
- AI features performance
- Database size tracking
- Concurrent operations
### Integrity Tests
- No data loss
- No data corruption
- Foreign key relationship maintenance
- Index integrity
- AI fields preservation
- Batch operations integrity
- Data type integrity
## Test Utilities
The `setup.ts` file provides reusable utilities:
- `setupTestEnvironment()` - Initialize test environment
- `createTestPrismaClient()` - Create isolated Prisma client
- `initializeTestDatabase()` - Apply all migrations
- `cleanupTestDatabase()` - Clean up test database
- `createSampleNotes()` - Generate sample test notes
- `createSampleAINotes()` - Generate AI-enabled test notes
- `measureExecutionTime()` - Performance measurement helper
- `verifyDataIntegrity()` - Data integrity checks
- `verifyTableExists()` - Table existence verification
- `verifyColumnExists()` - Column existence verification
- `verifyIndexExists()` - Index existence verification
- `getTableSchema()` - Get table schema information
- `getDatabaseSize()` - Get database file size
## Acceptance Criteria Coverage
**AC 1:** Unit tests exist for all migration scripts
**AC 2:** Integration tests verify database state before/after migrations
**AC 3:** Test suite validates rollback capability
**AC 4:** Performance tests ensure migrations complete within acceptable limits
**AC 5:** Tests verify data integrity (no loss/corruption)
**AC 6:** Test coverage meets minimum threshold (80%)
## CI/CD Integration
These tests are configured to run in CI/CD pipelines:
```yaml
# Example CI configuration
- name: Run migration tests
run: npm run test:migration
- name: Check coverage
run: npm run test:unit:coverage
```
## Isolation
Each test suite runs in an isolated test database:
- **Location:** `prisma/test-databases/migration-test.db`
- **Lifecycle:** Created before test suite, deleted after
- **Conflict:** No conflict with development database
## Troubleshooting
### Tests fail with database locked error
Ensure no other process is using the test database. The test utilities automatically clean up the test database.
### Tests timeout
Increase timeout values in `vitest.config.ts` if necessary.
### Coverage below threshold
Review coverage report in `coverage/index.html` to identify untested code.
## Contributing
When adding new migrations:
1. Add corresponding test cases in appropriate test files
2. Update this README with new test coverage
3. Ensure coverage threshold (80%) is maintained
4. Run all migration tests before committing