The Grist API requires all filter values to be arrays. This change adds automatic normalization of filter values in get_records, wrapping single values in lists before sending to the API. This fixes 400 errors when filtering on Ref columns with single integer IDs. Changes: - Add filters.py module with normalize_filter function - Update get_records to normalize filters before API call - Add Orders table with Ref column to mock Grist server - Add filter validation to mock server (rejects non-array values) - Fix shell script shebangs for portability (#!/usr/bin/env bash)
40 lines
1.1 KiB
Bash
Executable File
40 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# scripts/run-integration-tests.sh
|
|
# Run integration tests with branch isolation and dynamic port discovery
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# Get branch-based instance ID
|
|
TEST_INSTANCE_ID=$("$SCRIPT_DIR/get-test-instance-id.sh")
|
|
export TEST_INSTANCE_ID
|
|
|
|
echo "Test instance ID: $TEST_INSTANCE_ID"
|
|
|
|
# Start containers
|
|
cd "$PROJECT_ROOT/deploy/test"
|
|
docker compose up -d --build --wait
|
|
|
|
# Discover dynamic ports
|
|
GRIST_MCP_PORT=$(docker compose port grist-mcp 3000 | cut -d: -f2)
|
|
MOCK_GRIST_PORT=$(docker compose port mock-grist 8484 | cut -d: -f2)
|
|
|
|
echo "grist-mcp available at: http://localhost:$GRIST_MCP_PORT"
|
|
echo "mock-grist available at: http://localhost:$MOCK_GRIST_PORT"
|
|
|
|
# Export for tests
|
|
export GRIST_MCP_URL="http://localhost:$GRIST_MCP_PORT"
|
|
export MOCK_GRIST_URL="http://localhost:$MOCK_GRIST_PORT"
|
|
|
|
# Run tests
|
|
cd "$PROJECT_ROOT"
|
|
TEST_EXIT=0
|
|
uv run pytest tests/integration/ -v || TEST_EXIT=$?
|
|
|
|
# Cleanup
|
|
cd "$PROJECT_ROOT/deploy/test"
|
|
docker compose down -v
|
|
|
|
exit $TEST_EXIT
|