Skip to content
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Commit c130b47

Browse files
committed
chore: added tests for email
1 parent 7404a55 commit c130b47

File tree

3 files changed

+32
-2555
lines changed

3 files changed

+32
-2555
lines changed

__tests__/Schema_Test.res

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
open! Jest
22

33
module Lenses = {
4-
type state = {name: string}
4+
type state = {name: string, email: string}
55

6-
type rec field<_> = Name: field<string>
6+
type rec field<_> = Name: field<string> | Email: field<string>
77

88
let get:
99
type value. (state, field<value>) => value =
1010
(state, field) =>
1111
switch field {
1212
| Name => state.name
13+
| Email => state.email
1314
}
1415

1516
let set:
1617
type value. (state, field<value>, value) => state =
17-
(_, field, value) =>
18+
(state, field, value) =>
1819
switch field {
19-
| Name => {name: value}
20+
| Name => {...state, name: value}
21+
| Email => {...state, email: value}
2022
}
2123
}
2224

@@ -27,19 +29,40 @@ describe("Schema", (. ()) => {
2729
let schema = {
2830
open CustomSchema.Validation
2931

30-
schema([string(~min=12, ~minError="Invalid name.", Name)])
32+
schema([
33+
string(~min=12, ~minError="Invalid name.", Name),
34+
email(~error="Invalid email", Email),
35+
])
3136
}
3237

33-
let result = CustomSchema.validateOne(~field=Field(Name), ~values={name: "Alonzo"}, schema)
38+
let nameResult = CustomSchema.validateOne(
39+
~field=Field(Name),
40+
~values={name: "Alonzo", email: "[email protected]"},
41+
schema,
42+
)
3443

35-
expect(result)->not->toBe(None)
44+
expect(nameResult)->not->toBe(None)
3645

37-
switch result {
46+
switch nameResult {
3847
| None => ()
3948
| Some((field, error)) => {
4049
expect(field)->toStrictEqual(Field(Name))->ignore
4150
expect(error)->toStrictEqual(Error("Invalid name."))->ignore
4251
}
4352
}
53+
54+
let emailResult = CustomSchema.validateOne(
55+
~field=Field(Email),
56+
~values={name: "Alonzo", email: "test.."},
57+
schema,
58+
)
59+
60+
switch emailResult {
61+
| None => ()
62+
| Some((field, error)) => {
63+
expect(field)->toStrictEqual(Field(Email))->ignore
64+
expect(error)->toStrictEqual(Error("Invalid email."))->ignore
65+
}
66+
}
4467
})
4568
})

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
},
1717
"license": "MIT",
1818
"devDependencies": {
19-
"jest": "27.5.1"
19+
"jest": "28.1.3"
2020
},
2121
"dependencies": {
2222
"rescript": "^9.0.2"

0 commit comments

Comments
 (0)