Files
clientflow_backend/test_odoo_integration.sh
2026-06-09 22:55:58 +01:00

67 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -u
set -o pipefail
BASE_URL="${BASE_URL:-http://127.0.0.1:8020}"
PGHOST="${PGHOST:-192.168.1.110}"
PGUSER="${PGUSER:-clientflow}"
PGDATABASE="${PGDATABASE:-clientflow}"
if [ -z "${PGPASSWORD:-}" ]; then
echo "Define PGPASSWORD antes de correr."
exit 2
fi
code() {
local method="$1"
local url="$2"
shift 2
curl -s -o /dev/null -w "%{http_code}\n" -X "$method" "$url" "$@"
}
echo "== Odoo ClientFlow integration test =="
echo -n "GET /integrations -> "
code GET "$BASE_URL/integrations"
echo -n "POST /integrations/odoo/test -> "
code POST "$BASE_URL/integrations/odoo/test" -H "Content-Type: application/x-www-form-urlencoded"
echo -n "POST /integrations/odoo/sync-products -> "
code POST "$BASE_URL/integrations/odoo/sync-products" -H "Content-Type: application/x-www-form-urlencoded"
echo
echo "Produtos com metadata Odoo:"
PGPASSWORD="$PGPASSWORD" psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -c "
SELECT
count(*) FILTER (WHERE metadata ? 'odoo') AS synced_products,
count(*) FILTER (WHERE COALESCE((metadata->'odoo'->>'has_bom')::boolean, false)) AS with_bom,
count(*) FILTER (WHERE COALESCE((metadata->'odoo'->'stock'->>'available')::numeric, 0) > 0) AS with_available_stock,
max(metadata->'odoo'->>'last_synced_at') AS last_synced_at
FROM products;
"
echo
echo "Amostra:"
PGPASSWORD="$PGPASSWORD" psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -c "
SELECT
sku,
name,
metadata->'odoo'->>'product_id' AS odoo_id,
metadata->'odoo'->'stock'->>'available' AS available,
metadata->'odoo'->>'has_bom' AS has_bom
FROM products
WHERE metadata ? 'odoo'
ORDER BY name
LIMIT 15;
"
echo
echo "Sync runs:"
PGPASSWORD="$PGPASSWORD" psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -c "
SELECT sync_type, status, total_seen, total_changed, total_errors, message, started_at, finished_at
FROM odoo_sync_runs
ORDER BY started_at DESC
LIMIT 10;
"