Skip to content

Commit e50338a

Browse files
committed
Add testingLibraryDom module
1 parent 7d3a580 commit e50338a

File tree

8 files changed

+767
-1
lines changed

8 files changed

+767
-1
lines changed

library/build.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ val ghpages = ScalaJsReact.ghpages
2222
val ghpagesMacros = ScalaJsReact.ghpagesMacros
2323
val root = ScalaJsReact.root
2424
val scalafixRules = ScalaJsReact.scalafixRules
25+
val testingLibraryDom = ScalaJsReact.testingLibraryDom
2526
val tests = ScalaJsReact.tests
2627
val testsDep = ScalaJsReact.testsDep
2728
val testUtilMacros = ScalaJsReact.testUtilMacros

library/project/Build.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ object ScalaJsReact {
3535
ghpages,
3636
ghpagesMacros,
3737
scalafixRules,
38+
testingLibraryDom,
3839
testsDep,
3940
tests,
4041
testUtilMacros,
@@ -210,6 +211,13 @@ object ScalaJsReact {
210211
)
211212
.configure(conditionallyDisable) // keep this last
212213

214+
lazy val testingLibraryDom = project
215+
.dependsOn(testUtil)
216+
.configure(commonSettings, publicationSettings, hasNoTests)
217+
.settings(
218+
libraryDependencies += Dep.scalaJsDom.value,
219+
)
220+
213221
lazy val tests = project
214222
.dependsOn(testUtil, coreExtCatsEffect, extraExtMonocle3)
215223
.dependsOn(coreBundleCallback) // Low priority

library/project/Dependencies.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ object Dependencies {
1818
val scala3 = "3.3.0"
1919
val scalaJsDom = "2.8.1"
2020
val sourcecode = "0.4.4"
21+
val testingLibraryDomJs = "10.4.1"
2122

2223
// Internal
2324
val betterMonadicFor = "0.3.1"
@@ -75,9 +76,12 @@ object Dependencies {
7576
val reactDom = ReactArtifact("react-dom")
7677
val reactDomServer = ReactArtifact("react-dom-server.browser")
7778
val reactDoutestUtils = ReactArtifact("react-dom-test-utils")
79+
80+
val testingLibraryDomJs = Def.setting("org.webjars.npm" % "testing-library__dom" % Ver.testingLibraryDomJs /
81+
"dom.umd.js" commonJSName "TestingLibraryDom")
7882
}
7983

80-
def fastTextEncodingJs = "text.min.js" // 1.0.6 webjar only contains minified version
84+
def fastTextEncodingJs = s"${Ver.fastTextEncoding}/text.min.js" // 1.0.6 webjar only contains minified version
8185

8286
def globalDependencyOverrides = Def.setting(Seq(
8387
Dep.scalaJsDom.value,

library/testingLibraryDom/src/main/scala/japgolly/scalajs/react/testing_library/dom/SimEvent.scala

Lines changed: 453 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package japgolly.scalajs.react.testing_library.dom
2+
3+
import japgolly.scalajs.react.React
4+
import japgolly.scalajs.react.test.{ReactEventType, ReactTestUtils}
5+
import org.scalajs.dom.Node
6+
import scala.scalajs.js
7+
8+
object Simulate {
9+
import ReactEventType._
10+
11+
val raw = facade.TestingLibraryDom.fireEvent
12+
13+
private def mod(e: js.Object, eventType: ReactEventType): js.Object =
14+
js.Object.assign(
15+
js.Object(),
16+
eventType.defaultEventData,
17+
e)
18+
19+
private def mod(e: js.Object, eventType: ReactEventType, detail: Int): js.Object =
20+
js.Object.assign(
21+
js.Object(),
22+
eventType.defaultEventData,
23+
js.Dynamic.literal(detail = detail),
24+
e)
25+
26+
private def wrap(f: => Unit): Unit =
27+
if (React.majorVersion >= 18 && ReactTestUtils.IsReactActEnvironment())
28+
ReactTestUtils.actSync(f)
29+
else
30+
f
31+
32+
//def auxClick (t: Node, eventData: js.Object = null): Unit = wrap(raw.auxClick (t, mod(eventData, Mouse, 1)))
33+
//def beforeInput (t: Node, eventData: js.Object = null): Unit = wrap(raw.beforeInput (t, mod(eventData, Basic)))
34+
//def blur (t: Node, eventData: js.Object = null): Unit = wrap(raw.blur (t, mod(eventData, Focus)))
35+
//def change (t: Node, eventData: js.Object = null): Unit = wrap(raw.change (t, mod(eventData, Form)))
36+
def click (t: Node, eventData: js.Object = null): Unit = wrap(raw.click (t, mod(eventData, Mouse, 1)))
37+
def compositionEnd (t: Node, eventData: js.Object = null): Unit = wrap(raw.compositionEnd (t, mod(eventData, Composition)))
38+
def compositionStart (t: Node, eventData: js.Object = null): Unit = wrap(raw.compositionStart (t, mod(eventData, Composition)))
39+
def compositionUpdate (t: Node, eventData: js.Object = null): Unit = wrap(raw.compositionUpdate (t, mod(eventData, Composition)))
40+
def contextMenu (t: Node, eventData: js.Object = null): Unit = wrap(raw.contextMenu (t, mod(eventData, Mouse)))
41+
def copy (t: Node, eventData: js.Object = null): Unit = wrap(raw.copy (t, mod(eventData, Clipboard)))
42+
def cut (t: Node, eventData: js.Object = null): Unit = wrap(raw.cut (t, mod(eventData, Clipboard)))
43+
def doubleClick (t: Node, eventData: js.Object = null): Unit = wrap(raw.doubleClick (t, mod(eventData, Mouse, 2)))
44+
def dragEnd (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragEnd (t, mod(eventData, Drag)))
45+
def dragEnter (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragEnter (t, mod(eventData, Drag)))
46+
def dragExit (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragExit (t, mod(eventData, Drag)))
47+
def dragLeave (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragLeave (t, mod(eventData, Drag)))
48+
def dragOver (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragOver (t, mod(eventData, Drag)))
49+
def dragStart (t: Node, eventData: js.Object = null): Unit = wrap(raw.dragStart (t, mod(eventData, Drag)))
50+
def drag (t: Node, eventData: js.Object = null): Unit = wrap(raw.drag (t, mod(eventData, Drag)))
51+
def drop (t: Node, eventData: js.Object = null): Unit = wrap(raw.drop (t, mod(eventData, Drag)))
52+
//def error (t: Node, eventData: js.Object = null): Unit = wrap(raw.error (t, mod(eventData, Basic)))
53+
//def focus (t: Node, eventData: js.Object = null): Unit = wrap(raw.focus (t, mod(eventData, Focus)))
54+
def gotPointerCapture (t: Node, eventData: js.Object = null): Unit = wrap(raw.gotPointerCapture (t, mod(eventData, Pointer)))
55+
def input (t: Node, eventData: js.Object = null): Unit = wrap(raw.input (t, mod(eventData, Form)))
56+
def keyDown (t: Node, eventData: js.Object = null): Unit = wrap(raw.keyDown (t, mod(eventData, Keyboard)))
57+
//def keyPress (t: Node, eventData: js.Object = null): Unit = wrap(raw.keyPress (t, mod(eventData, Keyboard)))
58+
def keyUp (t: Node, eventData: js.Object = null): Unit = wrap(raw.keyUp (t, mod(eventData, Keyboard)))
59+
//def load (t: Node, eventData: js.Object = null): Unit = wrap(raw.load (t, mod(eventData, Basic)))
60+
def lostPointerCapture(t: Node, eventData: js.Object = null): Unit = wrap(raw.lostPointerCapture(t, mod(eventData, Pointer)))
61+
def mouseDown (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseDown (t, mod(eventData, Mouse, 1)))
62+
//def mouseEnter (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseEnter (t, mod(eventData, Mouse)))
63+
//def mouseLeave (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseLeave (t, mod(eventData, Mouse)))
64+
def mouseMove (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseMove (t, mod(eventData, Mouse)))
65+
def mouseOut (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseOut (t, mod(eventData, Mouse)))
66+
def mouseOver (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseOver (t, mod(eventData, Mouse)))
67+
def mouseUp (t: Node, eventData: js.Object = null): Unit = wrap(raw.mouseUp (t, mod(eventData, Mouse, 1)))
68+
def paste (t: Node, eventData: js.Object = null): Unit = wrap(raw.paste (t, mod(eventData, Clipboard)))
69+
def pointerCancel (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerCancel (t, mod(eventData, Pointer)))
70+
def pointerDown (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerDown (t, mod(eventData, Pointer)))
71+
//def pointerEnter (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerEnter (t, mod(eventData, Pointer)))
72+
//def pointerLeave (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerLeave (t, mod(eventData, Pointer)))
73+
def pointerMove (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerMove (t, mod(eventData, Pointer)))
74+
def pointerOut (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerOut (t, mod(eventData, Pointer)))
75+
def pointerOver (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerOver (t, mod(eventData, Pointer)))
76+
def pointerUp (t: Node, eventData: js.Object = null): Unit = wrap(raw.pointerUp (t, mod(eventData, Pointer)))
77+
def reset (t: Node, eventData: js.Object = null): Unit = wrap(raw.reset (t, mod(eventData, Form)))
78+
def scroll (t: Node, eventData: js.Object = null): Unit = wrap(raw.scroll (t, mod(eventData, UI)))
79+
//def select (t: Node, eventData: js.Object = null): Unit = wrap(raw.select (t, mod(eventData, Basic)))
80+
def submit (t: Node, eventData: js.Object = null): Unit = wrap(raw.submit (t, mod(eventData, Form)))
81+
def touchCancel (t: Node, eventData: js.Object = null): Unit = wrap(raw.touchCancel (t, mod(eventData, Touch)))
82+
def touchEnd (t: Node, eventData: js.Object = null): Unit = wrap(raw.touchEnd (t, mod(eventData, Touch)))
83+
def touchMove (t: Node, eventData: js.Object = null): Unit = wrap(raw.touchMove (t, mod(eventData, Touch)))
84+
def touchStart (t: Node, eventData: js.Object = null): Unit = wrap(raw.touchStart (t, mod(eventData, Touch)))
85+
def wheel (t: Node, eventData: js.Object = null): Unit = wrap(raw.wheel (t, mod(eventData, Wheel)))
86+
}

0 commit comments

Comments
 (0)