diff options
author | Peter Saxton <peterhsaxton@gmail.com> | 2023-08-08 09:17:44 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-08-09 13:47:02 +0100 |
commit | 6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c (patch) | |
tree | bfcaa258b8ceb61be72efe27a88d1b249c49e5b0 | |
parent | 69593662f47e5c797cc8076d72d70ac24d3813f7 (diff) | |
download | javascript-6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c.tar.gz javascript-6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c.zip |
add tests
-rw-r--r-- | src/ffi.mjs | 2 | ||||
-rw-r--r-- | test/gleam/javascript/promise_test.gleam | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/ffi.mjs b/src/ffi.mjs index 3889aa8..4d76d2d 100644 --- a/src/ffi.mjs +++ b/src/ffi.mjs @@ -82,7 +82,7 @@ class PromiseLayer { } export function newPromise(executor) { - return Promise.resolve((resolve) => + return new Promise((resolve) => executor((value) => { resolve(PromiseLayer.wrap(value)); }) diff --git a/test/gleam/javascript/promise_test.gleam b/test/gleam/javascript/promise_test.gleam index 159b064..4699a03 100644 --- a/test/gleam/javascript/promise_test.gleam +++ b/test/gleam/javascript/promise_test.gleam @@ -2,6 +2,23 @@ import gleam/javascript/promise.{Promise} import gleam/javascript/array import gleam/javascript.{ObjectType} +pub fn new_promise_test() { + promise.new(fn(resolve) { resolve(1) }) + |> promise.tap(fn(value) { + let assert 1 = value + }) +} + +pub fn new_does_not_collapse_nested_promise_test() { + promise.new(fn(resolve) { resolve(promise.new(fn(resolve) { resolve(1) })) }) + |> promise.tap(fn(value) { + // If the `Promise(Promise(Int))` collapsed into `Promise(Int)` (as they + // do for normal JS promises) then this would fail as the value would be the + // int value `1`. + let assert ObjectType = javascript.type_of(value) + }) +} + pub fn map_does_not_collapse_nested_promise_test() -> Promise(Promise(Int)) { promise.resolve(1) |> promise.map(promise.resolve) |