52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package standard
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/dop251/goja"
|
|
|
|
"reichard.io/poiesis/internal/builtin"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFetchReturnsPromise(t *testing.T) {
|
|
vm := goja.New()
|
|
builtin.RegisterBuiltins(vm)
|
|
|
|
result, err := vm.RunString(`fetch({input: "https://example.com"})`)
|
|
require.NoError(t, err)
|
|
|
|
promise, ok := result.Export().(*goja.Promise)
|
|
require.True(t, ok, "fetch should return a Promise")
|
|
assert.NotNil(t, promise)
|
|
}
|
|
|
|
func TestFetchAsyncAwait(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(http.StatusOK)
|
|
_, _ = w.Write([]byte(`{"status":"ok"}`))
|
|
}))
|
|
defer server.Close()
|
|
|
|
vm := goja.New()
|
|
builtin.RegisterBuiltins(vm)
|
|
|
|
result, err := vm.RunString(`
|
|
async function testFetch() {
|
|
const response = await fetch({input: "` + server.URL + `"});
|
|
return response.ok;
|
|
}
|
|
testFetch();
|
|
`)
|
|
require.NoError(t, err)
|
|
|
|
promise, ok := result.Export().(*goja.Promise)
|
|
require.True(t, ok, "async function should return a Promise")
|
|
assert.NotNil(t, promise)
|
|
}
|