Files
fn_registry/functions/browser/cdp_handle_dialog_test.go
T
egutierrez 8742cb25be feat(browser): auto-commit con 60 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 11:42:31 +02:00

56 lines
1.5 KiB
Go

package browser
import (
"sync"
"testing"
)
// TestCdpHandleDialog_nilConn cubre la precondición sin Chrome.
func TestCdpHandleDialog_nilConn(t *testing.T) {
_, _, err := CdpHandleDialog(nil, true, "")
if err == nil {
t.Fatal("esperaba error con conexion nula")
}
}
// TestDialogLog cubre el núcleo puro del registro de diálogos: contar, recordar
// el último, y la seguridad concurrente del mutex. No requiere Chrome.
func TestDialogLog(t *testing.T) {
t.Run("golden: cuenta y recuerda el ultimo", func(t *testing.T) {
l := &DialogLog{}
l.record("alert", "hola")
l.record("confirm", "¿seguro?")
count, lastType, lastMsg := l.Snapshot()
if count != 2 {
t.Errorf("count = %d, esperaba 2", count)
}
if lastType != "confirm" || lastMsg != "¿seguro?" {
t.Errorf("last = (%q,%q), esperaba (confirm, ¿seguro?)", lastType, lastMsg)
}
})
t.Run("edge: log vacio", func(t *testing.T) {
l := &DialogLog{}
count, lastType, lastMsg := l.Snapshot()
if count != 0 || lastType != "" || lastMsg != "" {
t.Errorf("log vacio = (%d,%q,%q), esperaba (0,\"\",\"\")", count, lastType, lastMsg)
}
})
t.Run("concurrencia: 100 records desde N goroutines no pierde cuentas", func(t *testing.T) {
l := &DialogLog{}
var wg sync.WaitGroup
for i := 0; i < 100; i++ {
wg.Add(1)
go func() {
defer wg.Done()
l.record("alert", "x")
}()
}
wg.Wait()
if count, _, _ := l.Snapshot(); count != 100 {
t.Errorf("count = %d, esperaba 100 (sin perder por race)", count)
}
})
}