-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidation.js
More file actions
144 lines (121 loc) · 3.44 KB
/
validation.js
File metadata and controls
144 lines (121 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/**
* Validation Example
*
* This example demonstrates email validation, department validation,
* and seniority validation features.
*/
const { Emails, Department, Seniority } = require('../build/main/index.js')
console.log('=== Email Validation Examples ===\n')
// Example 1: Valid email addresses
const validEmails = [
'user@example.com',
'john.doe@company.co.uk',
'support+info@business.org',
'test_email@domain.io',
]
console.log('Testing valid email addresses:')
validEmails.forEach((email) => {
try {
const isValid = Emails.validate(email)
console.log(`✓ ${email} - Valid`)
} catch (error) {
console.log(`✗ ${email} - Invalid: ${error.message}`)
}
})
console.log()
// Example 2: Invalid email addresses
const invalidEmails = [
'notanemail',
'@example.com',
'user@',
'user @example.com',
'user@.com',
]
console.log('Testing invalid email addresses:')
invalidEmails.forEach((email) => {
try {
const isValid = Emails.validate(email)
console.log(`✓ ${email} - Valid`)
} catch (error) {
console.log(`✗ ${email} - Invalid: ${error.message}`)
}
})
console.log('\n=== Department Validation Examples ===\n')
// Example 3: Valid departments
const validDepartments = [
'engineering',
'sales',
'finance',
'it',
'hr',
'marketing',
'operations',
'management',
'executive',
'legal',
'support',
]
console.log('Supported departments:')
validDepartments.forEach((dept) => {
const isValid = Department.validate(dept)
console.log(` ${isValid ? '✓' : '✗'} ${dept}`)
})
console.log('\n=== Seniority Validation Examples ===\n')
// Example 4: Valid seniority levels
const validSeniorities = [
'junior',
'senior',
'executive',
null, // null is also valid
]
console.log('Supported seniority levels:')
validSeniorities.forEach((level) => {
const isValid = Seniority.validate(level)
const display = level === null ? 'null (not specified)' : level
console.log(` ${isValid ? '✓' : '✗'} ${display}`)
})
console.log('\n=== Complete Validation Workflow ===\n')
// Example 5: Complete validation workflow
async function validateEmailComplete(email) {
console.log(`Validating: ${email}`)
console.log('─'.repeat(50))
try {
// Step 1: Validate email format
Emails.validate(email)
console.log('✓ Email format is valid')
// Step 2: Check if generic
const { GenericEmail } = require('../build/main/index.js')
const result = await GenericEmail.isGeneric(email)
console.log(`✓ Generic check: ${result.isgeneric ? 'Generic' : 'Personal'}`)
// Step 3: Validate department if present
if (result.department) {
const deptValid = Department.validate(result.department)
console.log(
`✓ Department (${result.department}): ${
deptValid ? 'Valid' : 'Invalid'
}`
)
}
// Step 4: Validate seniority if present
if (result.seniority) {
const seniorityValid = Seniority.validate(result.seniority)
console.log(
`✓ Seniority (${result.seniority}): ${
seniorityValid ? 'Valid' : 'Invalid'
}`
)
}
console.log('\n✓ All validations passed!\n')
return true
} catch (error) {
console.log(`\n✗ Validation failed: ${error.message}\n`)
return false
}
}
// Run complete validation examples
async function main() {
await validateEmailComplete('sales@company.com')
await validateEmailComplete('invalid-email')
await validateEmailComplete('hr@business.org')
}
main()