[#6102] fixed JSVM exception -> Go error unwrapping

This commit is contained in:
Gani Georgiev
2024-12-13 17:54:43 +02:00
parent 4f35fb74c8
commit 3098c2dcd8
33 changed files with 119 additions and 60 deletions

View File

@@ -2,6 +2,7 @@ package jsvm
import (
"encoding/json"
"errors"
"fmt"
"io"
"mime/multipart"
@@ -1456,6 +1457,47 @@ func TestHooksBinds(t *testing.T) {
}
}
func TestHooksExceptionUnwrapping(t *testing.T) {
app, _ := tests.NewTestApp()
defer app.Cleanup()
goErr := errors.New("test")
vmFactory := func() *goja.Runtime {
vm := goja.New()
baseBinds(vm)
vm.Set("$app", app)
vm.Set("goErr", goErr)
return vm
}
pool := newPool(1, vmFactory)
vm := vmFactory()
hooksBinds(app, vm, pool)
_, err := vm.RunString(`
onModelUpdate((e) => {
throw goErr
}, "demo1")
`)
if err != nil {
t.Fatal(err)
}
record, err := app.FindFirstRecordByFilter("demo1", "1=1")
if err != nil {
t.Fatal(err)
}
record.Set("text", "update")
err = app.Save(record)
if !errors.Is(err, goErr) {
t.Fatalf("Expected goError, got %v", err)
}
}
func TestRouterBindsCount(t *testing.T) {
app, _ := tests.NewTestApp()
defer app.Cleanup()