Merge pull request #94 from christroutner/ct-email-errors

fix(email): Handling errors like the other module controllers
This commit is contained in:
Chris Troutner
2020-11-23 08:11:51 -08:00
committed by GitHub
3 changed files with 24 additions and 18 deletions
+6 -4
View File
@@ -65,11 +65,13 @@ class Contact {
success: true
}
} catch (err) {
ctx.body = {
success: false
}
// ctx.body = {
// success: false
// }
// console.error(`Error: `, err)
throw err
// throw err
ctx.throw(422, err.message)
}
}
}
+1 -1
View File
@@ -404,7 +404,7 @@ describe('Users', () => {
assert.fail('Unexpected result')
} catch (err) {
console.log(err)
// console.log(err)
assert.include(err.message, 'Not Found')
}
})
+17 -13
View File
@@ -42,10 +42,11 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(err.response.data, "Property 'email' must be a string!")
}
})
it('should throw error if email property is wrong format', async () => {
try {
const options = {
@@ -66,13 +67,14 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'email' must be email format!"
)
}
})
it('should throw error if formMessage property is not provided', async () => {
try {
const options = {
@@ -92,13 +94,14 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'message' must be a string!"
)
}
})
it('should throw error if payloadTitle property is not provided', async () => {
try {
const options = {
@@ -119,13 +122,14 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'payloadTitle' must be a string!"
)
}
})
it('should throw error if payloadTitle property is not string', async () => {
try {
const options = {
@@ -147,13 +151,14 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'payloadTitle' must be a string!"
)
}
})
it('should throw error if email list provided is not a array', async () => {
try {
const options = {
@@ -176,13 +181,14 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'emailList' must be a array of emails!"
)
}
})
it('should throw error if email list provided is a empty array', async () => {
try {
const options = {
@@ -205,19 +211,18 @@ describe('Contact', () => {
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
assert(false, 'Unexpected result')
} catch (err) {
assert.equal(err.response.status, 500)
assert.equal(err.response.status, 422)
assert.include(
err.response.data,
"Property 'emailList' must be a array of emails!"
)
}
})
it('should send email with minimun input', async () => {
try {
// Mock live network calls.
sandbox.stub(
uut.nodemailer, 'sendEmail')
.resolves(true)
sandbox.stub(uut.nodemailer, 'sendEmail').resolves(true)
// Mock the context object.
const ctx = mockContext()
@@ -235,12 +240,11 @@ describe('Contact', () => {
assert(false, 'Unexpected result')
}
})
it('should send email with all input', async () => {
try {
// Mock live network calls.
sandbox.stub(
uut.nodemailer, 'sendEmail')
.resolves(true)
sandbox.stub(uut.nodemailer, 'sendEmail').resolves(true)
// Mock the context object.
const ctx = mockContext()