1+ var valid = require ( '../../lib/validators/email' ) ;
2+
3+ const email = {
4+ 5+ 6+ 7+ } ;
8+ const invalidEmail = {
9+ string : 'emailexamplecom' ,
10+ notAt : 'emailexample.com' ,
11+ notDot : 'email@example' ,
12+ 13+ notName : '@example.com'
14+ } ;
15+
16+ const modelBool = {
17+ email : true
18+ } ;
19+ const modelStr = {
20+ email : {
21+ domain : 'gmail.com'
22+ }
23+ } ;
24+ const modelArr = {
25+ email : {
26+ domain : [ 'gmail.com' , 'google.com' ]
27+ }
28+ } ;
29+
30+
31+ describe ( ' - Email validator' , ( ) => {
32+ it ( 'shall be a function' , ( ) => {
33+ expect ( typeof valid ) . toEqual ( 'function' ) ;
34+ } ) ;
35+
36+ it ( 'shall validate everything when empty model set' , ( ) => {
37+ // Valid emails
38+ for ( let elem in email ) {
39+ expect ( valid ( email [ elem ] , { } ) ) . toEqual ( true ) ;
40+ }
41+ // Invalid emails
42+ for ( let elem in invalidEmail ) {
43+ expect ( valid ( invalidEmail [ elem ] , { } ) ) . toEqual ( true ) ;
44+ }
45+ } ) ;
46+
47+ describe ( 'Just validate emails (boolean)' , ( ) => {
48+ describe ( 'shall validate valid emails' , ( ) => {
49+ for ( let elem in email ) {
50+ it ( 'as is ' + email [ elem ] , ( ) => {
51+ expect ( valid ( email [ elem ] , modelBool ) ) . toEqual ( true ) ;
52+ } ) ;
53+ }
54+ } ) ;
55+
56+ describe ( 'shall not validate invalid emails' , ( ) => {
57+ for ( let elem in invalidEmail ) {
58+ it ( 'as is ' + invalidEmail [ elem ] , ( ) => {
59+ expect ( valid ( invalidEmail [ elem ] , modelBool ) ) . toEqual ( false ) ;
60+ } ) ;
61+ }
62+ } ) ;
63+ } ) ;
64+
65+ describe ( 'Validate email single domain (string)' , ( ) => {
66+ describe ( 'shall validate valid emails with valid domain' , ( ) => {
67+ for ( let elem in email ) {
68+ if ( elem === 'gmail' ) {
69+ it ( 'as is ' + email [ elem ] , ( ) => {
70+ expect ( valid ( email [ elem ] , modelStr ) ) . toEqual ( true ) ;
71+ } ) ;
72+ } else {
73+ it ( 'as is ' + email [ elem ] , ( ) => {
74+ expect ( valid ( email [ elem ] , modelStr ) ) . toEqual ( false ) ;
75+ } ) ;
76+ }
77+ }
78+ } ) ;
79+
80+ describe ( 'shall not validate invalid emails' , ( ) => {
81+ for ( let elem in invalidEmail ) {
82+ it ( 'as is ' + invalidEmail [ elem ] , ( ) => {
83+ expect ( valid ( invalidEmail [ elem ] , modelStr ) ) . toEqual ( false ) ;
84+ } ) ;
85+ }
86+ } ) ;
87+ } ) ;
88+
89+ describe ( 'Validate email multiple domain (array)' , ( ) => {
90+ describe ( 'shall validate valid emails with valid domains' , ( ) => {
91+ for ( let elem in email ) {
92+ if ( elem === 'gmail' || elem === 'google' ) {
93+ it ( 'as is ' + email [ elem ] , ( ) => {
94+ expect ( valid ( email [ elem ] , modelArr ) ) . toEqual ( true ) ;
95+ } ) ;
96+ } else {
97+ it ( 'as is ' + email [ elem ] , ( ) => {
98+ expect ( valid ( email [ elem ] , modelArr ) ) . toEqual ( false ) ;
99+ } ) ;
100+ }
101+ }
102+ } ) ;
103+
104+ describe ( 'shall not validate invalid emails' , ( ) => {
105+ for ( let elem in invalidEmail ) {
106+ it ( 'as is ' + invalidEmail [ elem ] , ( ) => {
107+ expect ( valid ( invalidEmail [ elem ] , modelArr ) ) . toEqual ( false ) ;
108+ } ) ;
109+ }
110+ } ) ;
111+ } ) ;
112+
113+ } ) ;
0 commit comments