7f97ba8e9b44c77e870f44ef9127c07d549f1d70
Add if_not_exists=True to CREATE TABLE operations in migrations 0003 and 0004. This prevents DuplicateTableError when migrations are re-run on databases where tables were partially created.
Testing Strategy
The project uses a three-tier testing approach:
Test Categories
-
Unit Tests (
apps/api/tests/unit/)- Fast tests with no external dependencies
- Use SQLite in-memory database
- Run with:
make test-unitorpytest -m unit
-
Integration Tests (
apps/api/tests/integration/)- Test API endpoints with database
- Use PostgreSQL with transaction rollback
- Run with:
make test-integrationorpytest -m integration
-
System/E2E Tests (
e2e/)- End-to-end tests using Playwright
- Test full user journeys
- Run with:
make test-e2e
Running Tests
# Run all tests (excludes system tests by default)
make test
# Run specific categories
make test-unit # Fast unit tests only
make test-integration # Integration tests with DB
make test-system # Full stack tests
make test-e2e # Browser-based E2E tests
# Inside Docker container
docker compose exec api pytest -v -m unit
docker compose exec api pytest -v -m integration
Test Markers
Tests are marked with pytest markers:
@pytest.mark.unit- Fast, isolated tests@pytest.mark.integration- Tests with database/external services@pytest.mark.system- Full stack tests
Shared Fixtures
Common fixtures are in apps/api/tests/conftest.py:
sqlite_engine- SQLite engine for unit testspostgres_engine- PostgreSQL engine for integration testsdb_session- Database session with transaction rollbacktest_client- FastAPI TestClient instance
Description
Languages
Python
53.8%
TypeScript
36.7%
CSS
5%
HTML
3.4%
Dockerfile
0.4%
Other
0.6%