feat: add Drone CI pipelines, Jest unit tests, and Prettier check
Some checks failed
continuous-integration/drone/push Build encountered an error
Some checks failed
continuous-integration/drone/push Build encountered an error
Add Drone CI with server build/test and format check pipelines. Add unit tests for password utils and recurrenceExpander. Add check_format script, fix Jest config to ignore dist/, remove dead CaldavService.test.ts, apply Prettier formatting.
This commit is contained in:
19
CLAUDE.md
19
CLAUDE.md
@@ -14,6 +14,7 @@ This is a fullstack TypeScript monorepo with npm workspaces.
|
||||
```bash
|
||||
npm install # Install all dependencies for all workspaces
|
||||
npm run format # Format all TypeScript files with Prettier
|
||||
npm run check_format # Check formatting without modifying files (used in CI)
|
||||
```
|
||||
|
||||
### Client (apps/client) - Expo React Native app
|
||||
@@ -36,6 +37,7 @@ npm run build -w @calchat/shared # Compile shared types to dist/
|
||||
npm run dev -w @calchat/server # Build shared + start dev server with hot reload (tsx watch)
|
||||
npm run build -w @calchat/server # Build shared + compile TypeScript
|
||||
npm run start -w @calchat/server # Run compiled server (port 3000)
|
||||
npm run test -w @calchat/server # Run Jest unit tests
|
||||
```
|
||||
|
||||
## Technology Stack
|
||||
@@ -58,7 +60,9 @@ npm run start -w @calchat/server # Run compiled server (port 3000)
|
||||
| | react-native-logs | Client-side logging |
|
||||
| | tsdav | CalDAV client library |
|
||||
| | ical.js | iCalendar parsing/generation |
|
||||
| Testing | Jest / ts-jest | Server unit tests |
|
||||
| Deployment | Docker | Server containerization (multi-stage build) |
|
||||
| | Drone CI | CI/CD pipelines (build, test, format check) |
|
||||
| Planned | iCalendar | Event export/import |
|
||||
|
||||
## Architecture
|
||||
@@ -694,6 +698,21 @@ This uses the `preview` profile from `eas.json` which builds an APK with:
|
||||
- Package name: `com.gilmour109.calchat`
|
||||
- EAS Project ID: `b722dde6-7d89-48ff-9095-e007e7c7da87`
|
||||
|
||||
## CI/CD (Drone)
|
||||
|
||||
The project uses Drone CI (`.drone.yml`) with two pipelines:
|
||||
|
||||
1. **`server_build_and_test`**: Builds the server (`npm ci` + `npm run build`) and runs Jest tests (`npm run test`)
|
||||
2. **`check_for_formatting`**: Checks Prettier formatting across all workspaces (`npm run check_format`)
|
||||
|
||||
## Testing
|
||||
|
||||
Server uses Jest with ts-jest for unit testing. Config in `apps/server/jest.config.js` ignores `/node_modules/` and `/dist/`.
|
||||
|
||||
**Existing tests:**
|
||||
- `src/utils/password.test.ts` - Tests for bcrypt hash() and compare()
|
||||
- `src/utils/recurrenceExpander.test.ts` - Tests for expandRecurringEvents() (non-recurring, weekly/daily/UNTIL recurrence, EXDATE filtering, RRULE: prefix stripping, invalid RRULE fallback, multi-day events, sorting)
|
||||
|
||||
## Documentation
|
||||
|
||||
Detailed architecture diagrams are in `docs/`:
|
||||
|
||||
Reference in New Issue
Block a user