1296555f17
- Extract evaluateCondition + rule types into src/lib/rules.ts for testability - 48 unit tests for evaluateCondition (all fields/operators) and formatCategory - 21 integration tests for getTransactions filters and getParticipantBalances - Vitest configs for unit (vitest.config.ts) and integration (vitest.integration.config.ts) - setup-test-db.sh creates personal_test DB from production schema via pg_dump - Use vi.doMock + dynamic import pattern to isolate test DB from Prisma singleton
40 lines
1.2 KiB
Bash
Executable File
40 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Creates the personal_test database and writes .env.test
|
|
# Run once before integration tests: npm run test:setup
|
|
|
|
set -e
|
|
|
|
PG_CONTAINER=postgres-personal
|
|
PG_USER=personal
|
|
PG_PASS=personalpassword123
|
|
TEST_DB=personal_test
|
|
|
|
# Discover the container's bridge IP (accessible from the host on Linux)
|
|
PG_HOST=$(docker inspect "$PG_CONTAINER" \
|
|
--format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 2>/dev/null | head -1)
|
|
|
|
if [ -z "$PG_HOST" ]; then
|
|
echo "ERROR: Could not find container '$PG_CONTAINER'"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Postgres container at $PG_HOST:5432"
|
|
|
|
# Create test database (ignore error if it already exists)
|
|
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d postgres \
|
|
-c "CREATE DATABASE $TEST_DB;" 2>/dev/null || true
|
|
|
|
# Wipe and rebuild schema from production (schema only, no data)
|
|
echo "Copying schema from $PG_USER to $TEST_DB..."
|
|
docker exec "$PG_CONTAINER" pg_dump -U "$PG_USER" --schema-only "$PG_USER" \
|
|
| docker exec -i "$PG_CONTAINER" psql -U "$PG_USER" -d "$TEST_DB" -q
|
|
|
|
echo "Schema ready."
|
|
|
|
# Write .env.test
|
|
cat > "$(dirname "$0")/../.env.test" << EOF
|
|
DATABASE_URL=postgresql://$PG_USER:$PG_PASS@$PG_HOST:5432/$TEST_DB
|
|
EOF
|
|
|
|
echo ".env.test written — integration tests can now run with: npm run test:integration"
|