Cleanup error classes and CI

This commit is contained in:
Nick Cipollo
2021-03-23 16:15:29 -04:00
parent 9b14e2e2d3
commit 8f0b206fd3
17 changed files with 386 additions and 370 deletions

View File

@@ -1,99 +1,70 @@
import { GithubError } from "../src/GithubError"
describe('GithubError', () => {
describe('ErrorMessage', () => {
it('provides error code', () => {
describe('has error with code', () => {
const error = {
code: "missing"
message: 'something bad happened',
errors: [
{
code: 'missing',
resource: 'release'
},
{
code: 'already_exists',
resource: 'release'
}
],
status: 422
}
const githubError = new GithubError(error)
expect(githubError.code).toBe('missing')
})
it('generates missing resource error message', () => {
const resource = "release"
const error = {
code: "missing",
resource: resource
}
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe(`${resource} does not exist.`)
})
it('generates missing field error message', () => {
const resource = "release"
const field = "body"
const error = {
code: "missing_field",
field: field,
resource: resource
}
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe(`The ${field} field on ${resource} is missing.`)
})
it('generates invalid field error message', () => {
const resource = "release"
const field = "body"
const error = {
code: "invalid",
field: field,
resource: resource
}
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe(`The ${field} field on ${resource} is an invalid format.`)
})
it('generates resource already exists error message', () => {
const resource = "release"
const field = "body"
const error = {
code: "already_exists",
resource: resource
}
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe(`${resource} already exists.`)
})
describe('generates custom error message', () => {
it('with documentation url', () => {
const url = "https://api.example.com"
const error = {
code: "custom",
message: "foo",
documentation_url: url
}
it('does not have error', () => {
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe(`foo\nPlease see ${url}.`)
expect(githubError.hasErrorWithCode('missing_field')).toBeFalsy()
})
it('without documentation url', () => {
const error = {
code: "custom",
message: "foo"
}
it('has error', () => {
const githubError = new GithubError(error)
const message = githubError.toString()
expect(message).toBe('foo')
expect(githubError.hasErrorWithCode('missing')).toBeTruthy()
})
})
})
it('generates message with errors', () => {
const error = {
message: 'something bad happened',
errors: [
{
code: 'missing',
resource: 'release'
},
{
code: 'already_exists',
resource: 'release'
}
],
status: 422
}
const githubError = new GithubError(error)
const expectedString = "Error 422: something bad happened\nErrors:\n- release does not exist.\n- release already exists."
expect(githubError.toString()).toBe(expectedString)
})
it('generates message without errors', () => {
const error = {
message: 'something bad happened',
status: 422
}
const githubError = new GithubError(error)
expect(githubError.toString()).toBe('Error 422: something bad happened')
})
it('provides error status', () => {
const error = { status: 404 }
const githubError = new GithubError(error)
expect(githubError.status).toBe(404)
})
})