pre migrate
This commit is contained in:
@@ -6,19 +6,27 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
_ "reichard.io/poiesis/internal/standard"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"modernc.org/quickjs"
|
||||
"reichard.io/poiesis/internal/functions"
|
||||
)
|
||||
|
||||
type TestArgs struct {
|
||||
Field1 string `json:"field1"`
|
||||
}
|
||||
|
||||
func (t TestArgs) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestExecuteTypeScript(t *testing.T) {
|
||||
var stdout, stderr bytes.Buffer
|
||||
|
||||
rt, err := New(context.Background())
|
||||
rt, err := New(context.Background(), WithStderr(&stderr), WithStdout(&stdout))
|
||||
assert.NoError(t, err, "Expected no error")
|
||||
|
||||
err = rt.RunFile("../../test_data/test.ts", &stdout, &stderr)
|
||||
err = rt.RunFile("../../test_data/test.ts")
|
||||
|
||||
assert.NoError(t, err, "Expected no error")
|
||||
assert.Empty(t, stderr.String(), "Expected no error output")
|
||||
@@ -34,17 +42,47 @@ func TestExecuteTypeScript(t *testing.T) {
|
||||
assert.GreaterOrEqual(t, len(lines), 3, "Should have at least 3 output lines")
|
||||
}
|
||||
|
||||
func TestFetchBuiltinIntegration(t *testing.T) {
|
||||
rt, err := New(context.Background())
|
||||
assert.NoError(t, err, "Expected no error")
|
||||
func TestAsyncFunctionResolution(t *testing.T) {
|
||||
functions.RegisterAsyncFunction("resolveTest", func(_ context.Context, args TestArgs) (string, error) {
|
||||
return "test-result", nil
|
||||
})
|
||||
|
||||
tsContent := `
|
||||
const result = add({a: 5, b: 10});
|
||||
console.log("Result:", result);
|
||||
`
|
||||
|
||||
var stdout, stderr bytes.Buffer
|
||||
err = rt.RunCode(tsContent, &stdout, &stderr)
|
||||
r, err := New(context.Background())
|
||||
require.NoError(t, err)
|
||||
assert.Contains(t, stdout.String(), "Result:")
|
||||
|
||||
result, err := r.vm.Eval(`resolveTest("hello")`, quickjs.EvalGlobal)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, result)
|
||||
}
|
||||
|
||||
func TestAsyncFunctionRejection(t *testing.T) {
|
||||
functions.RegisterAsyncFunction("rejectTest", func(_ context.Context, args TestArgs) (string, error) {
|
||||
return "", assert.AnError
|
||||
})
|
||||
|
||||
r, err := New(context.Background())
|
||||
require.NoError(t, err)
|
||||
|
||||
result, err := r.vm.Eval(`rejectTest({field1: "hello"})`, quickjs.EvalGlobal)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, result)
|
||||
}
|
||||
|
||||
func TestNonPromise(t *testing.T) {
|
||||
functions.RegisterFunction("nonPromiseTest", func(_ context.Context, args TestArgs) (string, error) {
|
||||
return "sync-result", nil
|
||||
})
|
||||
|
||||
r, err := New(context.Background())
|
||||
require.NoError(t, err)
|
||||
|
||||
result, err := r.vm.Eval(`nonPromiseTest({field1: "hello"})`, quickjs.EvalGlobal)
|
||||
require.NoError(t, err)
|
||||
|
||||
if obj, ok := result.(*quickjs.Object); ok {
|
||||
var arr []any
|
||||
if err := obj.Into(&arr); err == nil && len(arr) > 0 {
|
||||
assert.Equal(t, "sync-result", arr[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user