From add7c15a51e5cd95fd9414dc722984ee75a9786c Mon Sep 17 00:00:00 2001 From: Przemyslaw Jan Pietrzak Date: Mon, 1 Oct 2018 23:15:01 +0200 Subject: [PATCH] add some units --- __tests__/Elements/ATest.re | 14 ++++++++++++++ __tests__/Elements/DivTest.re | 30 ++++++++++++++++++++++++++++++ __tests__/Elements/TextTest.re | 12 ++++++++++++ bsconfig.json | 4 ++++ package-scripts.js | 2 +- src/Elements/A.re | 27 +++++++++++++++++++++++++++ src/Elements/ElementFactory.re | 2 ++ src/Elements/ElementsTypes.re | 3 ++- src/Rembrandt.re | 1 + 9 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 __tests__/Elements/ATest.re create mode 100644 __tests__/Elements/DivTest.re create mode 100644 __tests__/Elements/TextTest.re create mode 100644 src/Elements/A.re diff --git a/__tests__/Elements/ATest.re b/__tests__/Elements/ATest.re new file mode 100644 index 0000000..4e109d6 --- /dev/null +++ b/__tests__/Elements/ATest.re @@ -0,0 +1,14 @@ +open Jest; + +open Rembrandt.Elements; + +describe("Elements: A", () => + Expect.( + test(" should create node with url", () => + ().attributes + |> List.filter(((_, value)) => value !== "") + |> expect + |> toEqual([("href", "url")]) + ) + ) +); \ No newline at end of file diff --git a/__tests__/Elements/DivTest.re b/__tests__/Elements/DivTest.re new file mode 100644 index 0000000..0f6b358 --- /dev/null +++ b/__tests__/Elements/DivTest.re @@ -0,0 +1,30 @@ +open Jest; + +open Rembrandt.Elements; + +describe("Elements: div", () => { + open Expect; + + let filterEmpty = List.filter(((_, value)) => value !== ""); + + test("
should create node with class", () => + (
).attributes + |> filterEmpty + |> expect + |> toEqual([("class", "class-value")]) + ); + + test("
should create node with id", () => + (
).attributes + |> filterEmpty + |> expect + |> toEqual([("id", "id-value")]) + ); + + test("
should create node with class & id", () => + (
).attributes + |> filterEmpty + |> expect + |> toEqual([("id", "id-value"), ("class", "class-value")]) + ); +}); \ No newline at end of file diff --git a/__tests__/Elements/TextTest.re b/__tests__/Elements/TextTest.re new file mode 100644 index 0000000..0fab05e --- /dev/null +++ b/__tests__/Elements/TextTest.re @@ -0,0 +1,12 @@ +open Jest; + +open Rembrandt.Elements; + +describe("Elements: Text", () => { + open Expect; + + test("text should contains string from argument", () => { + text("example text").text |> expect |> toEqual("example text"); + }); + +}); diff --git a/bsconfig.json b/bsconfig.json index 7046ccf..d9cb3af 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -10,6 +10,10 @@ "dir": "__tests__", "type": "dev" }, + { + "dir": "__tests__/Elements", + "type": "dev" + }, { "dir": "examples", "type": "dev" diff --git a/package-scripts.js b/package-scripts.js index 8eafabf..43b6b4f 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -17,7 +17,7 @@ module.exports = { examples: examples.map(buildExample).join(' && '), }, test: { - default: 'jest __tests__', + default: 'jest __tests__ __tests__/**/*.bs.js', e2e: { script: `node cypress/server/main.js & ./node_modules/.bin/cypress run --spec 'cypress/integration/**'` } diff --git a/src/Elements/A.re b/src/Elements/A.re new file mode 100644 index 0000000..b618481 --- /dev/null +++ b/src/Elements/A.re @@ -0,0 +1,27 @@ +open ElementFactory; +open ElementsTypes; +open Dom; + +let a = + ( + ~id="", + ~_class="", + ~style="", + ~key="", + ~href="", + ~onClick: eventHandler=defaultHandler, + ~children, + _rest, + ) + : node => + generateNode( + ~name=A, + ~id, + ~_class, + ~style, + ~key, + ~href, + ~onClick, + ~children, + (), + ); diff --git a/src/Elements/ElementFactory.re b/src/Elements/ElementFactory.re index b312130..9ff12dd 100644 --- a/src/Elements/ElementFactory.re +++ b/src/Elements/ElementFactory.re @@ -15,6 +15,7 @@ let generateNode = ~value="", ~action="", ~method="", + ~href="", ~onClick, ~onChange=defaultHandler, ~onInput=defaultHandler, @@ -35,6 +36,7 @@ let generateNode = ("key", key), ("type", _type), ("value", value), + ("href", href), ("method", method), ("action", action), ], diff --git a/src/Elements/ElementsTypes.re b/src/Elements/ElementsTypes.re index f393047..387c13c 100644 --- a/src/Elements/ElementsTypes.re +++ b/src/Elements/ElementsTypes.re @@ -6,7 +6,8 @@ type nodeName = | SPAN | Button | Input - | Form; + | Form + | A; type attributes = list((string, string)); diff --git a/src/Rembrandt.re b/src/Rembrandt.re index 3bd3b52..da1c16e 100644 --- a/src/Rembrandt.re +++ b/src/Rembrandt.re @@ -6,6 +6,7 @@ module Elements = { let input = Input.input; let text = Text.text; let form = FormElement.form; + let a = A.a; } module Commands = {