1
+ import values from 'lodash/values'
2
+ import every from 'lodash/every'
1
3
import { validate } from '../src/index'
2
4
3
5
const elevenSeconds = 11 * 1000
@@ -6,6 +8,8 @@ describe('validation tests', () => {
6
8
it ( 'fails with bad regex' , async ( ) => {
7
9
const res = await validate ( 'dav [email protected] ' )
8
10
expect ( res . valid ) . toBe ( false )
11
+ expect ( res . reason ) . toBe ( 'regex' )
12
+ expect ( res . validators . regex ?. valid ) . toBe ( false )
9
13
expect ( res ) . toMatchSnapshot ( )
10
14
} )
11
15
@@ -15,18 +19,25 @@ describe('validation tests', () => {
15
19
validateRegex : false ,
16
20
} )
17
21
expect ( res . valid ) . toBe ( false )
22
+ expect ( res . reason ) . toBe ( 'smtp' )
23
+ expect ( res . validators . regex ?. valid ) . toBe ( true )
24
+ expect ( res . validators . smtp ?. valid ) . toBe ( false )
18
25
expect ( res ) . toMatchSnapshot ( )
19
26
} )
20
27
21
28
it ( 'fails with common typo' , async ( ) => {
22
29
const res = await validate ( '[email protected] ' )
23
30
expect ( res . valid ) . toBe ( false )
31
+ expect ( res . reason ) . toBe ( 'typo' )
32
+ expect ( res . validators . typo ?. valid ) . toBe ( false )
24
33
expect ( res ) . toMatchSnapshot ( )
25
34
} )
26
35
27
36
it ( 'fails with disposable email' , async ( ) => {
28
37
const res = await validate ( '[email protected] ' )
29
38
expect ( res . valid ) . toBe ( false )
39
+ expect ( res . reason ) . toBe ( 'disposable' )
40
+ expect ( res . validators . disposable ?. valid ) . toBe ( false )
30
41
expect ( res ) . toMatchSnapshot ( )
31
42
} )
32
43
@@ -35,6 +46,8 @@ describe('validation tests', () => {
35
46
async ( ) => {
36
47
const res = await validate ( '[email protected] ' )
37
48
expect ( res . valid ) . toBe ( false )
49
+ expect ( res . reason ) . toBe ( 'mx' )
50
+ expect ( res . validators . mx ?. valid ) . toBe ( false )
38
51
expect ( res ) . toMatchSnapshot ( )
39
52
} ,
40
53
elevenSeconds
@@ -43,6 +56,8 @@ describe('validation tests', () => {
43
56
it ( 'fails with bad mailbox' , async ( ) => {
44
57
const res = await validate ( '[email protected] ' )
45
58
expect ( res . valid ) . toBe ( false )
59
+ expect ( res . reason ) . toBe ( 'smtp' )
60
+ expect ( res . validators . smtp ?. valid ) . toBe ( false )
46
61
expect ( res ) . toMatchSnapshot ( )
47
62
} )
48
63
@@ -51,6 +66,8 @@ describe('validation tests', () => {
51
66
async ( ) => {
52
67
const res = await validate ( '[email protected] ' )
53
68
expect ( res . valid ) . toBe ( false )
69
+ expect ( res . reason ) . toBe ( 'smtp' )
70
+ expect ( res . validators . smtp ?. valid ) . toBe ( false )
54
71
expect ( res ) . toMatchSnapshot ( )
55
72
} ,
56
73
elevenSeconds
@@ -63,7 +80,8 @@ describe('validation tests', () => {
63
80
64
81
validateSMTP : false ,
65
82
} )
66
-
83
+ expect ( res . valid ) . toBe ( true )
84
+ expect ( every ( values ( res . validators ) , x => x && x . valid ) ) . toBe ( true )
67
85
expect ( res ) . toMatchSnapshot ( )
68
86
} ,
69
87
elevenSeconds
@@ -74,6 +92,7 @@ describe('validation tests', () => {
74
92
async ( ) => {
75
93
const res = await validate ( '[email protected] ' )
76
94
expect ( res . valid ) . toBe ( true )
95
+ expect ( every ( values ( res . validators ) , x => x && x . valid ) ) . toBe ( true )
77
96
expect ( res ) . toMatchSnapshot ( )
78
97
} ,
79
98
elevenSeconds
@@ -84,6 +103,7 @@ describe('validation tests', () => {
84
103
async ( ) => {
85
104
const res = await validate ( '[email protected] ' )
86
105
expect ( res . valid ) . toBe ( true )
106
+ expect ( every ( values ( res . validators ) , x => x && x . valid ) ) . toBe ( true )
87
107
expect ( res ) . toMatchSnapshot ( )
88
108
} ,
89
109
elevenSeconds
0 commit comments