aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Saxton <peterhsaxton@gmail.com>2023-08-08 09:17:44 +0200
committerLouis Pilfold <louis@lpil.uk>2023-08-09 13:47:02 +0100
commit6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c (patch)
treebfcaa258b8ceb61be72efe27a88d1b249c49e5b0
parent69593662f47e5c797cc8076d72d70ac24d3813f7 (diff)
downloadjavascript-6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c.tar.gz
javascript-6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c.zip
add tests
-rw-r--r--src/ffi.mjs2
-rw-r--r--test/gleam/javascript/promise_test.gleam17
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)