Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions __tests__/expect_vitest.res
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
open Vitest

// Helpers for creating undefined/null values in tests
// (replaces deprecated Js.Undefined.return and Js.Undefined.empty)
external makeUndefined: 'a => undefined<'a> = "%identity"
external emptyUndefined: undefined<'a> = "%undefined"
external nullValue: Null.t<'a> = "%null"

type test_record = {value: string}

let () = {
Expand Down Expand Up @@ -84,21 +90,21 @@ let () = {
describe("ExpectJs", () => {
open ExpectJs

test("toBeDefined", () => expect(Js.Undefined.return(3))->toBeDefined)
test("toBeFalsy", () => expect(Js.Float._NaN)->toBeFalsy)
test("toBeNull", () => expect(Js.null)->toBeNull)
test("toBeDefined", () => expect(makeUndefined(3))->toBeDefined)
test("toBeFalsy", () => expect(Float.Constants.nan)->toBeFalsy)
test("toBeNull", () => expect(nullValue)->toBeNull)
test("toBeTruthy", () => expect([])->toBeTruthy)
test("toBeUndefined", () => expect(Js.Undefined.empty)->toBeUndefined)
test("toBeUndefined", () => expect(emptyUndefined)->toBeUndefined)
test("toContainProperties", () =>
expect({"foo": 0, "bar": true})->toContainProperties(["foo", "bar"])
)
test("toMatchObject", () => expect({"a": 1, "b": 2, "c": 3})->toMatchObject({"a": 1, "b": 2}))

test("not toBeDefined", () => expect(Js.undefined)->not_->toBeDefined)
test("not toBeDefined", () => expect(emptyUndefined)->not_->toBeDefined)
test("not toBeFalsy", () => expect([])->not_->toBeFalsy)
test("not toBeNull", () => expect(Js.Null.return(4))->not_->toBeNull)
test("not toBeTruthy", () => expect(Js.Float._NaN)->not_->toBeTruthy)
test("not toBeUndefined", () => expect(Js.Undefined.return(4))->not_->toBeUndefined)
test("not toBeNull", () => expect(Null.make(4))->not_->toBeNull)
test("not toBeTruthy", () => expect(Float.Constants.nan)->not_->toBeTruthy)
test("not toBeUndefined", () => expect(makeUndefined(4))->not_->toBeUndefined)
test("not toContainProperties", () =>
expect({"foo": 0, "bar": true})->not_->toContainProperties(["foo", "zoo"])
)
Expand Down
9 changes: 4 additions & 5 deletions __tests__/globals_only_vitest.res
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
open Vitest
module Promise = Js.Promise

let () = {
Only.test("Only.test", () => pass)
Expand All @@ -8,7 +7,7 @@ let () = {
Only.testPromise("testPromise - timeout ok", ~timeout=1, () => Promise.resolve(pass))

Only.testAll("testAll", list{"foo", "bar", "baz"}, input =>
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
Expand All @@ -18,15 +17,15 @@ let () = {
input,
output,
)) =>
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
}
)
Only.testAllPromise("testAllPromise", list{"foo", "bar", "baz"}, input =>
Promise.resolve(
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
Expand All @@ -38,7 +37,7 @@ let () = {
list{("foo", 3), ("barbaz", 6), ("bananas!", 8)},
((input, output)) =>
Promise.resolve(
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
Expand Down
29 changes: 14 additions & 15 deletions __tests__/globals_vitest.res
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
open Vitest
module Promise = Js.Promise

let () = {
test("pass", () => pass)
Expand All @@ -19,18 +18,18 @@ let () = {
testPromise("testPromise - timeout ok", ~timeout=1, () => Promise.resolve(pass))

Skip.testPromise("testPromise - timeout fail", ~timeout=1, () =>
Promise.make((~resolve as _, ~reject as _) => ())
Promise.make((_, _) => ())
)

testAll("testAll", list{"foo", "bar", "baz"}, input =>
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
}
)
testAll("testAll - tuples", list{("foo", 3), ("barbaz", 6), ("bananas!", 8)}, ((input, output)) =>
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
Expand All @@ -39,7 +38,7 @@ let () = {

testAllPromise("testAllPromise", list{"foo", "bar", "baz"}, input =>
Promise.resolve(
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
Expand All @@ -51,7 +50,7 @@ let () = {
output,
)) =>
Promise.resolve(
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
Expand Down Expand Up @@ -147,7 +146,7 @@ let () = {
})

Skip.describe("timeout should fail suite", () => {
beforeAllPromise(~timeout=1, () => Promise.make((~resolve as _, ~reject as _) => ()))
beforeAllPromise(~timeout=1, () => Promise.make((_, _) => ()))
test("", () => pass) /* runner will crash if there's no tests */
})
})
Expand Down Expand Up @@ -236,7 +235,7 @@ let () = {
})

Skip.describe("timeout should fail suite", () => {
beforeEachPromise(~timeout=1, () => Promise.make((~resolve as _, ~reject as _) => ()))
beforeEachPromise(~timeout=1, () => Promise.make((_, _) => ()))
test("", () => pass) /* runner will crash if there's no tests */
})
})
Expand Down Expand Up @@ -381,7 +380,7 @@ let () = {
})

Skip.describe("timeout should fail suite", () => {
afterAllPromise(~timeout=1, () => Promise.make((~resolve as _, ~reject as _) => ()))
afterAllPromise(~timeout=1, () => Promise.make((_, _) => ()))
test("", () => pass) /* runner will crash if there's no tests */
})
})
Expand Down Expand Up @@ -470,7 +469,7 @@ let () = {
})

Skip.describe("timeout should fail suite", () => {
afterEachPromise(~timeout=1, () => Promise.make((~resolve as _, ~reject as _) => ()))
afterEachPromise(~timeout=1, () => Promise.make((_, _) => ()))
test("", () => pass) /* runner will crash if there's no tests */
})
})
Expand All @@ -485,11 +484,11 @@ let () = {

Skip.testPromise("Skip.testPromise", () => Promise.resolve(pass))
Skip.testPromise("testPromise - timeout", ~timeout=1, () =>
Promise.make((~resolve as _, ~reject as _) => ())
Promise.make((_, _) => ())
)

Skip.testAll("testAll", list{"foo", "bar", "baz"}, input =>
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
Expand All @@ -499,15 +498,15 @@ let () = {
input,
output,
)) =>
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
}
)
Skip.testAllPromise("testAllPromise", list{"foo", "bar", "baz"}, input =>
Promise.resolve(
if Js.String.length(input) === 3 {
if String.length(input) === 3 {
pass
} else {
fail("")
Expand All @@ -519,7 +518,7 @@ let () = {
list{("foo", 3), ("barbaz", 6), ("bananas!", 8)},
((input, output)) =>
Promise.resolve(
if Js.String.length(input) === output {
if String.length(input) === output {
pass
} else {
fail("")
Expand Down
57 changes: 31 additions & 26 deletions __tests__/mockjs_vitest.res
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
open Vitest
open ExpectJs

// Helpers for creating undefined values in tests
// (replaces deprecated makeUndefined and emptyUndefined)
external makeUndefined: 'a => undefined<'a> = "%identity"
external emptyUndefined: undefined<'a> = "%undefined"

/* TODO: move to BS std lib */
@send external bind: ('a => 'b, 'c, 'a, 'a) => 'b = "bind"
@send external bindThis: ('a => 'b, 'c) => 'a => 'b = "bind"
Expand Down Expand Up @@ -89,27 +94,27 @@ let _ = {

test("mockReset - resets implementations", _ => {
let mockFn = Mock.inferred_fn()
mockFn->MockJs.mockReturnValue(Js.Undefined.return(128))->ignore
mockFn->MockJs.mockReturnValue(makeUndefined(128))->ignore
let fn = MockJs.fn(mockFn)

let before = call(fn, ())
mockFn->MockJs.mockReset
let after = call(fn, ())

expect((before, after))->toEqual((Js.Undefined.return(128), Js.Undefined.empty))
expect((before, after))->toEqual((makeUndefined(128), emptyUndefined))
})

test("mockImplementation - sets implementation to use for subsequent invocations", _ => {
let mockFn = Mock.inferred_fn()
let fn = MockJs.fn(mockFn)

let before = call(fn, 10)
mockFn->MockJs.mockImplementation(a => Js.Undefined.return(Int.toString(a)))->ignore
mockFn->MockJs.mockImplementation(a => makeUndefined(Int.toString(a)))->ignore

expect((before, call(fn, 18), call(fn, 24)))->toEqual((
Js.Undefined.empty,
Js.Undefined.return("18"),
Js.Undefined.return("24"),
emptyUndefined,
makeUndefined("18"),
makeUndefined("24"),
))
})

Expand All @@ -118,16 +123,16 @@ let _ = {
let fn = MockJs.fn(mockFn)

let before = call(fn, 10)
mockFn->MockJs.mockImplementationOnce(a => Js.Undefined.return(Int.toString(a)))->ignore
mockFn->MockJs.mockImplementationOnce(a => makeUndefined(Int.toString(a)))->ignore
mockFn
->MockJs.mockImplementationOnce(a => Js.Undefined.return(Int.toString(a * 2)))
->MockJs.mockImplementationOnce(a => makeUndefined(Int.toString(a * 2)))
->ignore

expect((before, call(fn, 18), call(fn, 24), call(fn, 12)))->toEqual((
Js.Undefined.empty,
Js.Undefined.return("18"),
Js.Undefined.return("48"),
Js.Undefined.empty,
emptyUndefined,
makeUndefined("18"),
makeUndefined("48"),
emptyUndefined,
))
})

Expand All @@ -140,9 +145,9 @@ let _ = {
mockFn->MockJs.mockReturnThis->ignore

expect((before, call(fn, ()), call(fn, ())))->toEqual((
Js.Undefined.empty,
Js.Undefined.return(this),
Js.Undefined.return(this),
emptyUndefined,
makeUndefined(this),
makeUndefined(this),
))
})

Expand All @@ -151,12 +156,12 @@ let _ = {
let fn = MockJs.fn(mockFn)

let before = call(fn, 10)
mockFn->MockJs.mockReturnValue(Js.Undefined.return(146))->ignore
mockFn->MockJs.mockReturnValue(makeUndefined(146))->ignore

expect((before, call(fn, 18), call(fn, 24)))->toEqual((
Js.Undefined.empty,
Js.Undefined.return(146),
Js.Undefined.return(146),
emptyUndefined,
makeUndefined(146),
makeUndefined(146),
))
})

Expand All @@ -165,14 +170,14 @@ let _ = {
let fn = MockJs.fn(mockFn)

let before = call(fn, 10)
mockFn->MockJs.mockReturnValueOnce(Js.Undefined.return(29))->ignore
mockFn->MockJs.mockReturnValueOnce(Js.Undefined.return(41))->ignore
mockFn->MockJs.mockReturnValueOnce(makeUndefined(29))->ignore
mockFn->MockJs.mockReturnValueOnce(makeUndefined(41))->ignore

expect((before, call(fn, 18), call(fn, 24), call(fn, 12)))->toEqual((
Js.Undefined.empty,
Js.Undefined.return(29),
Js.Undefined.return(41),
Js.Undefined.empty,
emptyUndefined,
makeUndefined(29),
makeUndefined(41),
emptyUndefined,
))
})

Expand Down Expand Up @@ -295,7 +300,7 @@ let _ = {
expect
(before, fn (), fn ())
-> toEqual
(Js.Undefined.empty, Js.Undefined.return this, Js.Undefined.return this)
(emptyUndefined, makeUndefined this, makeUndefined this)
);
*/

Expand Down
10 changes: 4 additions & 6 deletions __tests__/runner_only_vitest.res
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
module Promise = Js.Promise2

include Vitest.Runner({
type t<_> = bool
let affirm = ok => assert(ok)
Expand All @@ -11,19 +9,19 @@ let () = {
Only.testPromise("Only.testPromise", () => Promise.resolve(true))
Only.testPromise("testPromise - timeout ok", ~timeout=1, () => Promise.resolve(true))

Only.testAll("testAll", list{"foo", "bar", "baz"}, input => Js.String.length(input) === 3)
Only.testAll("testAll", list{"foo", "bar", "baz"}, input => String.length(input) === 3)
Only.testAll("testAll - tuples", list{("foo", 3), ("barbaz", 6), ("bananas!", 8)}, ((
input,
output,
)) => Js.String.length(input) === output)
)) => String.length(input) === output)

Only.testAllPromise("testAllPromise", list{"foo", "bar", "baz"}, input =>
Promise.resolve(Js.String.length(input) === 3)
Promise.resolve(String.length(input) === 3)
)
Only.testAllPromise(
"testAllPromise - tuples",
list{("foo", 3), ("barbaz", 6), ("bananas!", 8)},
((input, output)) => Promise.resolve(Js.String.length(input) === output),
((input, output)) => Promise.resolve(String.length(input) === output),
)

Only.describe("Only.describe", () => test("some aspect", () => 1 + 2 === 3))
Expand Down
Loading