library(testthat)
source("common.R")
describe("2.1. Promise States", {
describe("2.1.1. When pending, a promise:", {
it("2.1.1.1. may transition to either the fulfilled or rejected state.", {
a <- ext_promise()
expect_identical(a$status(), "pending")
a$resolve(0)
expect_identical(a$status(), "fulfilled")
b <- ext_promise()
expect_identical(b$status(), "pending")
squelch_unhandled_promise_error(b$promise)
b$reject("err")
expect_identical(b$status(), "rejected")
})
})
describe("2.1.2. When fulfilled, a promise:", {
it("2.1.2.1. must not transition to any other state.", {
a <- ext_promise()
a$resolve(TRUE)
expect_identical(a$status(), "fulfilled")
a$reject("err")
expect_identical(a$status(), "fulfilled")
})
it("2.1.2.2. must have a value, which must not change.", {
a <- ext_promise()
a$resolve(TRUE)
expect_identical(a$status(), "fulfilled")
a$resolve(FALSE)
expect_identical(extract(a$promise), TRUE)
})
})
describe("2.1.3. When rejected, a promise:", {
it("2.1.3.1. must not transition to any other state.", {
a <- ext_promise()
squelch_unhandled_promise_error(a$promise)
a$reject("err")
expect_identical(a$status(), "rejected")
a$resolve(TRUE)
expect_identical(a$status(), "rejected")
})
it("2.1.3.2. must have a reason, which must not change.", {
a <- ext_promise()
a$reject("err1")
expect_identical(a$status(), "rejected")
a$reject("err2")
expect_error(extract(a$promise), "err1")
})
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.