Files
release-action/__tests__/GithubErrorDetail.test.ts

99 lines
2.7 KiB
TypeScript

import { describe, expect, it } from "vitest"
import { GithubErrorDetail } from "../src/GithubErrorDetail.js"
describe("GithubErrorDetail", () => {
it("provides error code", () => {
const error = {
code: "missing",
}
const detail = new GithubErrorDetail(error)
expect(detail.code).toBe("missing")
})
it("generates missing resource error message", () => {
const resource = "release"
const error = {
code: "missing",
resource: resource,
}
const detail = new GithubErrorDetail(error)
const message = detail.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 detail = new GithubErrorDetail(error)
const message = detail.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 detail = new GithubErrorDetail(error)
const message = detail.toString()
expect(message).toBe(`The ${field} field on ${resource} is an invalid format.`)
})
it("generates resource already exists error message", () => {
const resource = "release"
const error = {
code: "already_exists",
resource: resource,
}
const detail = new GithubErrorDetail(error)
const message = detail.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,
}
const detail = new GithubErrorDetail(error)
const message = detail.toString()
expect(message).toBe(`foo\nPlease see ${url}.`)
})
it("without documentation url", () => {
const error = {
code: "custom",
message: "foo",
}
const detail = new GithubErrorDetail(error)
const message = detail.toString()
expect(message).toBe("foo")
})
})
})