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
4 changes: 2 additions & 2 deletions dune-project
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

(generate_opam_files true)

(maintainers "Javier Ch\195\161varri <javier.chavarri@gmail.com>")
(maintainers "Javier Chávarri <javier.chavarri@gmail.com>")

(authors
"glennsl glennsl@users.noreply.github.com"
Expand All @@ -27,6 +27,6 @@
(description "Melange bindings for Jest JavaScript library.")
(depends
(melange
(>= "2.0.0"))
(>= "5.0.0"))
(reason :with-test)
(melange-webapi :with-test)))
7 changes: 3 additions & 4 deletions jest-dom/__tests__/jest_dom_test.ml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
[@@@mel.config { flags = [| "--preamble";
{|
[@@@mel.config
{ flags = [| "--preamble"; {|
/**
* @jest-environment jsdom
*/
|}
|] }]
|} |] }]

open Jest
open JestDom
Expand Down
88 changes: 52 additions & 36 deletions jest-dom/jestDom.ml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module TextContent = struct
type options = < normalizeWhitespace : bool Js.undefined > Js.t

external makeOptions : ?normalizeWhitespace:bool -> unit -> options = ""
[@@mel.obj]
[@@mel.obj]
end

external expect : t -> expect = "expect"
Expand All @@ -22,118 +22,134 @@ external not_ : expect -> expect = "not" [@@mel.get]
let pass : (expect -> unit) -> expect -> Jest.assertion =
fun assertion expect -> expect |. assertion |. fun _ -> Jest.pass

external _toBeDisabled : unit = "toBeDisabled" [@@mel.send.pipe: expect]
external _toBeDisabled : (expect[@mel.this]) -> unit = "toBeDisabled"
[@@mel.send]

let toBeDisabled = _toBeDisabled |. pass

external _toBeEnabled : unit = "toBeEnabled" [@@mel.send.pipe: expect]
external _toBeEnabled : (expect[@mel.this]) -> unit = "toBeEnabled" [@@mel.send]

let toBeEnabled = _toBeEnabled |. pass

external _toBeEmptyDOMElement : unit = "toBeEmptyDOMElement"
[@@mel.send.pipe: expect]
external _toBeEmptyDOMElement : (expect[@mel.this]) -> unit
= "toBeEmptyDOMElement"
[@@mel.send]

let toBeEmptyDOMElement = _toBeEmptyDOMElement |. pass

external _toBeInTheDocument : unit = "toBeInTheDocument"
[@@mel.send.pipe: expect]
external _toBeInTheDocument : (expect[@mel.this]) -> unit = "toBeInTheDocument"
[@@mel.send]

let toBeInTheDocument = _toBeInTheDocument |. pass

external _toBeInvalid : unit = "toBeInvalid" [@@mel.send.pipe: expect]
external _toBeInvalid : (expect[@mel.this]) -> unit = "toBeInvalid" [@@mel.send]

let toBeInvalid = _toBeInvalid |. pass

external _toBeRequired : unit = "toBeRequired" [@@mel.send.pipe: expect]
external _toBeRequired : (expect[@mel.this]) -> unit = "toBeRequired"
[@@mel.send]

let toBeRequired = _toBeRequired |. pass

external _toBeValid : unit = "toBeValid" [@@mel.send.pipe: expect]
external _toBeValid : (expect[@mel.this]) -> unit = "toBeValid" [@@mel.send]

let toBeValid = _toBeValid |. pass

external _toBeVisible : unit = "toBeVisible" [@@mel.send.pipe: expect]
external _toBeVisible : (expect[@mel.this]) -> unit = "toBeVisible" [@@mel.send]

let toBeVisible = _toBeVisible |. pass

external _toContainElement : t Js.nullable -> unit = "toContainElement"
[@@mel.send.pipe: expect]
external _toContainElement : t Js.nullable -> (expect[@mel.this]) -> unit
= "toContainElement"
[@@mel.send]

let toContainElement element =
element |. Js.Nullable.fromOption |. _toContainElement |. pass

external _toContainHTML : string -> unit = "toContainHTML"
[@@mel.send.pipe: expect]
external _toContainHTML : string -> (expect[@mel.this]) -> unit
= "toContainHTML"
[@@mel.send]

let toContainHTML html = html |. _toContainHTML |. pass

external _toHaveAttribute : string -> string Js.undefined -> unit
external _toHaveAttribute :
string -> string Js.undefined -> (expect[@mel.this]) -> unit
= "toHaveAttribute"
[@@mel.send.pipe: expect]
[@@mel.send]

let toHaveAttribute attribute ?value =
_toHaveAttribute attribute (Js.Undefined.fromOption value) |. pass

external _toHaveClass : string -> HaveClass.options Js.undefined -> unit
external _toHaveClass :
string -> HaveClass.options Js.undefined -> (expect[@mel.this]) -> unit
= "toHaveClass"
[@@mel.send.pipe: expect]
[@@mel.send]

let toHaveClass class_ ?options =
_toHaveClass
(match class_ with `Str cls -> cls | `Lst lst -> String.concat " " lst)
(Js.Undefined.fromOption options)
|. pass

external _toHaveFocus : unit = "toHaveFocus" [@@mel.send.pipe: expect]
external _toHaveFocus : (expect[@mel.this]) -> unit = "toHaveFocus" [@@mel.send]

let toHaveFocus = _toHaveFocus |. pass

external _toHaveFormValues : < .. > Js.t -> unit = "toHaveFormValues"
[@@mel.send.pipe: expect]
external _toHaveFormValues : < .. > Js.t -> (expect[@mel.this]) -> unit
= "toHaveFormValues"
[@@mel.send]

let toHaveFormValues values = values |. _toHaveFormValues |. pass

external _toHaveStyle :
([ `Str of string | `Obj of < .. > Js.t ][@mel.unwrap]) -> unit = "toHaveStyle"
[@@mel.send.pipe: expect]
([ `Str of string | `Obj of < .. > Js.t ][@mel.unwrap]) ->
(expect[@mel.this]) ->
unit = "toHaveStyle"
[@@mel.send]

let toHaveStyle style = style |. _toHaveStyle |. pass

external _toHaveTextContent :
([ `Str of string | `RegExp of Js.Re.t ][@mel.unwrap]) ->
TextContent.options Js.undefined ->
(expect[@mel.this]) ->
unit = "toHaveTextContent"
[@@mel.send.pipe: expect]
[@@mel.send]

let toHaveTextContent content ?options =
_toHaveTextContent content (Js.Undefined.fromOption options) |. pass

external _toHaveValue :
([ `Str of string | `Arr of string array | `Num of int ][@mel.unwrap]) -> unit
= "toHaveValue"
[@@mel.send.pipe: expect]
([ `Str of string | `Arr of string array | `Num of int ][@mel.unwrap]) ->
(expect[@mel.this]) ->
unit = "toHaveValue"
[@@mel.send]

let toHaveValue value = value |. _toHaveValue |. pass

external _toHaveDisplayValue :
([ `Str of string | `RegExp of Js.Re.t | `Arr of string array ][@mel.unwrap]) ->
(expect[@mel.this]) ->
unit = "toHaveDisplayValue"
[@@mel.send.pipe: expect]
[@@mel.send]

let toHaveDisplayValue value = value |. _toHaveDisplayValue |. pass

external _toBeChecked : unit = "toBeChecked" [@@mel.send.pipe: expect]
external _toBeChecked : (expect[@mel.this]) -> unit = "toBeChecked" [@@mel.send]

let toBeChecked = _toBeChecked |. pass

external _toBePartiallyChecked : unit = "toBePartiallyChecked"
[@@mel.send.pipe: expect]
external _toBePartiallyChecked : (expect[@mel.this]) -> unit
= "toBePartiallyChecked"
[@@mel.send]

let toBePartiallyChecked = _toBePartiallyChecked |. pass

external _toHaveAccessibleDescription :
([ `Str of string | `RegExp of Js.Re.t ][@mel.unwrap]) -> unit
= "toHaveAccessibleDescription"
[@@mel.send.pipe: expect]
([ `Str of string | `RegExp of Js.Re.t ][@mel.unwrap]) ->
(expect[@mel.this]) ->
unit = "toHaveAccessibleDescription"
[@@mel.send]

let toHaveAccessibleDescription content = content |. _toHaveAccessibleDescription |. pass
let toHaveAccessibleDescription content =
content |. _toHaveAccessibleDescription |. pass
2 changes: 1 addition & 1 deletion jest-dom/jestDom.mli
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module TextContent : sig
type options = < normalizeWhitespace : bool Js.undefined > Js.t

external makeOptions : ?normalizeWhitespace:bool -> unit -> options = ""
[@@mel.obj]
[@@mel.obj]
end

external expect : t -> expect = "expect"
Expand Down
Loading