import { createClient } from '@supabase/supabase-js';
const URL='http://127.0.0.1:54321';
const ANON=process.env.SUPABASE_ANON_KEY || process.env.VITE_SUPABASE_ANON_KEY || '';
let fallos=0; const check=(c,m)=>{console.log((c?'  OK  ':'  XX  ')+m); if(!c)fallos++;};
const dueno = createClient(URL, ANON, {auth:{persistSession:false}});
const { error: le } = await dueno.auth.signInWithPassword({ email:'dueno@laesquina.com', password:'Dueno1234' });
if(le){console.log('login dueno err', le.message); process.exit(1);}

const correo = 'moto.nuevo@laesquina.com';
const clave = 'Moto5678';
const { data, error } = await dueno.functions.invoke('crear-repartidor', { body: { nombre:'Pedro Moto', telefono:'0424-3334455', vehiculo:'Moto', email: correo, password: clave } });
if (error) {
  let m=error.message; try{ const j=await error.context.json(); m=j.error||m }catch{}
  check(false, 'crear-repartidor: '+m); 
} else {
  check(!data?.error, 'crear-repartidor OK'+(data?.error?': '+data.error:''));
}

const { data: reps } = await dueno.rpc('mis_repartidores');
check((reps||[]).some(r=>r.nombre==='Pedro Moto'), 'el nuevo repartidor aparece en la lista del dueno ('+(reps?.length||0)+')');

// el repartidor nuevo puede entrar
const rep = createClient(URL, ANON, {auth:{persistSession:false}});
const { error: rle } = await rep.auth.signInWithPassword({ email: correo, password: clave });
check(!rle, 'el repartidor puede iniciar sesion con su correo y clave'+(rle?': '+rle.message:''));
// y su perfil es repartidor de La Esquina
const { data: mp } = await rep.rpc('mi_perfil_repartidor');
check(mp?.[0]?.restaurante_nombre?.includes('Esquina'), 'su perfil es repartidor de La Esquina');

// aislamiento: un correo repetido falla
const { data: d2, error: e2 } = await dueno.functions.invoke('crear-repartidor', { body: { nombre:'Repetido', vehiculo:'Moto', email: correo, password: clave } });
let dup = e2 || d2?.error;
check(!!dup, 'no deja crear dos repartidores con el mismo correo');

console.log('\n'+(fallos===0?'PANEL REPARTIDORES OK':fallos+' FALLO(S)')); process.exit(fallos===0?0:1);
