Skip to content

Commit e515c34

Browse files
committed
Upgrade dependencies and code to go with it
1 parent 7efd67d commit e515c34

File tree

6 files changed

+107
-59
lines changed

6 files changed

+107
-59
lines changed

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,22 @@
2727
},
2828
"keywords": [
2929
"bucklescript",
30+
"react",
3031
"testing"
3132
],
3233
"dependencies": {
3334
"bs-dom-testing-library": "^0.1.0",
34-
"react-testing-library": "^3.1.3"
35+
"react-testing-library": "^4.1.5"
3536
},
3637
"peerDependencies": {
3738
"reason-react": "^0.4.0 || ^0.3.0"
3839
},
3940
"devDependencies": {
4041
"bs-jest": "^0.3.2",
41-
"bs-platform": "^3.1.5",
42+
"bs-platform": "^4.0.2",
4243
"npm-run-all": "^4.1.3",
43-
"react": "^16.4.0",
44-
"react-dom": "^16.4.0",
44+
"react": "^16.4.1",
45+
"react-dom": "^16.4.1",
4546
"reason-react": "^0.4.2",
4647
"rimraf": "^2.6.2",
4748
"write-changelog": "^1.1.0"

src/ReactTestingLibrary.re

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,37 @@ module Simulate = {
88
type renderResult;
99
type renderOptions = {
1010
.
11+
"baseElement": Js.undefined(Dom.element),
1112
"container": Js.undefined(Dom.element),
1213
};
1314

14-
[@bs.module "react-testing-library"]
15-
external cleanup : unit => unit = "";
16-
17-
[@bs.module "react-testing-library"]
18-
external renderIntoDocument : ReasonReact.reactElement => renderResult = "";
15+
[@bs.module "react-testing-library"] external cleanup : unit => unit = "";
1916

2017
[@bs.module "react-testing-library"]
21-
external _render : (ReasonReact.reactElement, renderOptions) => renderResult = "render";
18+
external _render : (ReasonReact.reactElement, renderOptions) => renderResult =
19+
"render";
2220

2321
[@bs.get] external container : renderResult => Dom.element = "";
2422

25-
[@bs.send.pipe : renderResult] external debug : unit = "";
23+
[@bs.get] external baseElement : renderResult => Dom.element = "";
2624

27-
[@bs.send.pipe : renderResult] external unmount : unit => bool = "";
25+
[@bs.send.pipe: renderResult]
26+
external _debug : Js.undefined(Dom.element) => unit = "debug";
2827

29-
[@bs.send.pipe : renderResult] external rerender : ReasonReact.reactElement => unit = "";
28+
[@bs.send.pipe: renderResult] external unmount : unit => bool = "";
3029

31-
let render = (~container=?, element) =>
32-
_render(element, { "container": Js.Undefined.fromOption(container) });
30+
[@bs.send.pipe: renderResult]
31+
external rerender : ReasonReact.reactElement => unit = "";
32+
33+
let render = (~baseElement=?, ~container=?, element) => {
34+
let baseElement_ =
35+
switch (container) {
36+
| Some(container') => Js.Undefined.return(container')
37+
| None => Js.Undefined.fromOption(baseElement)
38+
};
39+
let container_ = Js.Undefined.fromOption(container);
40+
41+
_render(element, {"baseElement": baseElement_, "container": container_});
42+
};
3343

44+
let debug = (~el=?, ()) => _debug(Js.Undefined.fromOption(el));

src/ReactTestingLibrary.rei

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,29 @@ module Simulate: {
3535
};
3636

3737
type renderResult;
38-
type renderOptions = {. "container": Js.undefined(Dom.element)};
39-
40-
[@bs.module "react-testing-library"]
41-
external cleanup : unit => unit = "";
38+
type renderOptions = {
39+
.
40+
"baseElement": Js.undefined(Dom.element),
41+
"container": Js.undefined(Dom.element),
42+
};
4243

43-
[@bs.module "react-testing-library"]
44-
external renderIntoDocument : ReasonReact.reactElement => renderResult = "";
44+
[@bs.module "react-testing-library"] external cleanup : unit => unit = "";
4545

46-
[@bs.get]
47-
external container : renderResult => Dom.element = "";
46+
[@bs.get] external container : renderResult => Dom.element = "";
4847

49-
[@bs.send.pipe : renderResult]
50-
external debug : unit = "";
48+
[@bs.get] external baseElement : renderResult => Dom.element = "";
5149

52-
[@bs.send.pipe : renderResult]
53-
external unmount : unit => bool = "";
50+
[@bs.send.pipe: renderResult] external unmount : unit => bool = "";
5451

55-
[@bs.send.pipe : renderResult]
52+
[@bs.send.pipe: renderResult]
5653
external rerender : ReasonReact.reactElement => unit = "";
5754

5855
let render:
59-
(~container: Dom.element=?, ReasonReact.reactElement) => renderResult;
56+
(
57+
~baseElement: Dom.element=?,
58+
~container: Dom.element=?,
59+
ReasonReact.reactElement
60+
) =>
61+
renderResult;
62+
63+
let debug: (~el: Dom.element=?, unit, renderResult) => unit;

src/__tests__/ReactTestingLibrary_test.re

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module Greeting = {
1919
};
2020
};
2121

22+
external unsafeAsElement : Dom.node => Dom.element = "%identity";
2223
[@bs.get] external firstChild : Dom.element => Dom.node = "";
2324
[@bs.get] external innerHTML : Dom.node => string = "";
2425

@@ -51,7 +52,7 @@ describe("ReactTestingLibrary", () => {
5152
});
5253

5354
test("works", () => {
54-
let _ = element |> render |> debug;
55+
let _ = element |> render |> debug();
5556

5657
let _ = [%raw {|expect(console.log).toHaveBeenCalledTimes(1)|}];
5758
let _ = [%raw {|
@@ -62,25 +63,21 @@ describe("ReactTestingLibrary", () => {
6263

6364
pass;
6465
});
65-
});
66-
67-
describe("renderIntoDocument", () => {
68-
open JestJs;
6966

70-
afterEach(cleanup);
67+
test("works with element argument", () => {
68+
let result = element |> render;
69+
let el = result |> container |> firstChild |> unsafeAsElement;
7170

72-
test("works", () => {
73-
let mock = JestJs.fn(() => ());
74-
let spy = mock |> MockJs.fn;
71+
let _ = result |> debug(~el, ());
7572

76-
let _ = renderIntoDocument(<Test spy />);
77-
78-
cleanup();
79-
80-
let html = [%raw {|document.body.innerHTML|}];
73+
let _ = [%raw {|expect(console.log).toHaveBeenCalledTimes(1)|}];
74+
let _ = [%raw {|
75+
expect(console.log).toHaveBeenCalledWith(
76+
expect.stringContaining('Heading')
77+
)
78+
|}];
8179

82-
html |> expect |> toBe("") |> ignore;
83-
mock |> MockJs.calls |> Array.length |> expect |> toBe(1);
80+
pass;
8481
});
8582
});
8683

src/__tests__/__snapshots__/ReactTestingLibrary_test.bs.js.snap

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
exports[`ReactTestingLibrary render works 1`] = `
44
Object {
5+
"baseElement": <body>
6+
<div>
7+
<div>
8+
<h1>
9+
Heading
10+
</h1>
11+
</div>
12+
</div>
13+
</body>,
514
"container": <div>
615
<div>
716
<h1>

yarn.lock

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,9 @@ bs-jest@^0.3.2:
452452
dependencies:
453453
jest "^22.0.4"
454454

455-
bs-platform@^3.1.5:
456-
version "3.1.5"
457-
resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-3.1.5.tgz#fb34ee4702bc9163848d5537096c4f31ebaeed40"
455+
bs-platform@^4.0.2:
456+
version "4.0.2"
457+
resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-4.0.2.tgz#ee80f4948f5db0533df667612a53d9a52837cf24"
458458

459459
bser@^2.0.0:
460460
version "2.0.0"
@@ -796,7 +796,7 @@ diff@^3.2.0:
796796
version "3.5.0"
797797
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
798798

799-
dom-testing-library@^2.3.1, dom-testing-library@^2.3.2:
799+
dom-testing-library@^2.3.2:
800800
version "2.3.2"
801801
resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-2.3.2.tgz#640a8d6c614ed84c455ef536c3166238db3b1499"
802802
dependencies:
@@ -805,6 +805,14 @@ dom-testing-library@^2.3.1, dom-testing-library@^2.3.2:
805805
pretty-format "^22.4.3"
806806
wait-for-expect "^0.4.0"
807807

808+
dom-testing-library@^3.0.1:
809+
version "3.0.2"
810+
resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-3.0.2.tgz#fe1a857205a02132b978d0e15f208ea40cadc07f"
811+
dependencies:
812+
mutationobserver-shim "^0.3.2"
813+
pretty-format "^22.4.3"
814+
wait-for-expect "^0.4.0"
815+
808816
domexception@^1.0.0:
809817
version "1.0.1"
810818
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
@@ -2787,7 +2795,7 @@ rc@^1.1.7:
27872795
minimist "^1.2.0"
27882796
strip-json-comments "~2.0.1"
27892797

2790-
"react-dom@>=15.0.0 || >=16.0.0", react-dom@^16.4.0:
2798+
"react-dom@>=15.0.0 || >=16.0.0":
27912799
version "16.4.0"
27922800
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.0.tgz#099f067dd5827ce36a29eaf9a6cdc7cbf6216b1e"
27932801
dependencies:
@@ -2796,14 +2804,23 @@ rc@^1.1.7:
27962804
object-assign "^4.1.1"
27972805
prop-types "^15.6.0"
27982806

2799-
react-testing-library@^3.1.3:
2800-
version "3.1.3"
2801-
resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-3.1.3.tgz#0b7ceaa1d5a13415b681e1769f1ba03f7f3f4794"
2807+
react-dom@^16.4.1:
2808+
version "16.4.1"
2809+
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6"
28022810
dependencies:
2803-
dom-testing-library "^2.3.1"
2804-
wait-for-expect "^0.5.0"
2811+
fbjs "^0.8.16"
2812+
loose-envify "^1.1.0"
2813+
object-assign "^4.1.1"
2814+
prop-types "^15.6.0"
2815+
2816+
react-testing-library@^4.1.5:
2817+
version "4.1.5"
2818+
resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-4.1.5.tgz#6f7bc01b8d67383b6b27900107a1a984807e32cb"
2819+
dependencies:
2820+
dom-testing-library "^3.0.1"
2821+
wait-for-expect "^1.0.0"
28052822

2806-
"react@>=15.0.0 || >=16.0.0", react@^16.4.0:
2823+
"react@>=15.0.0 || >=16.0.0":
28072824
version "16.4.0"
28082825
resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585"
28092826
dependencies:
@@ -2812,6 +2829,15 @@ react-testing-library@^3.1.3:
28122829
object-assign "^4.1.1"
28132830
prop-types "^15.6.0"
28142831

2832+
react@^16.4.1:
2833+
version "16.4.1"
2834+
resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32"
2835+
dependencies:
2836+
fbjs "^0.8.16"
2837+
loose-envify "^1.1.0"
2838+
object-assign "^4.1.1"
2839+
prop-types "^15.6.0"
2840+
28152841
read-pkg-up@^1.0.1:
28162842
version "1.0.1"
28172843
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
@@ -3560,9 +3586,9 @@ wait-for-expect@^0.4.0:
35603586
version "0.4.0"
35613587
resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-0.4.0.tgz#341c96ab89d6102a0169a9be6cd0de354de92c17"
35623588

3563-
wait-for-expect@^0.5.0:
3564-
version "0.5.0"
3565-
resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-0.5.0.tgz#cc935a94c6039967bd7760c9e9cc557f4674887a"
3589+
wait-for-expect@^1.0.0:
3590+
version "1.0.0"
3591+
resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.0.0.tgz#edf2d5790c36dc67c4e21ac6ccedd7d4b79dc6ac"
35663592

35673593
walker@~1.0.5:
35683594
version "1.0.7"

0 commit comments

Comments
 (0)