diff --git a/packages/solid/src/requester/results/error/HttpErrorResult.ts b/packages/solid/src/requester/results/error/HttpErrorResult.ts index b4db237..94653c5 100644 --- a/packages/solid/src/requester/results/error/HttpErrorResult.ts +++ b/packages/solid/src/requester/results/error/HttpErrorResult.ts @@ -21,13 +21,6 @@ export abstract class HttpErrorResult extends ResourceError { this.response = response; } - async getBodyForDebug(): Promise { - if (this.response.bodyUsed) { - return `Could not get body for ${this.uri} that yeilded status ${this.status}. The body stream has already been consumed.`; - } - return await this.response.text(); - } - static isnt(response: Response) { return ( !(response.status >= 200 && response.status < 300) && diff --git a/packages/solid/test/ErrorResult.test.ts b/packages/solid/test/ErrorResult.test.ts new file mode 100644 index 0000000..50da070 --- /dev/null +++ b/packages/solid/test/ErrorResult.test.ts @@ -0,0 +1,64 @@ +import { + AggregateError, + ErrorResult, + ResourceError, + UnexpectedResourceError, +} from "../src/requester/results/error/ErrorResult"; +import { InvalidUriError } from "../src/requester/results/error/InvalidUriError"; + +describe("ErrorResult", () => { + describe("fromThrown", () => { + it("returns an UnexpecteResourceError if a string is provided", () => { + expect( + UnexpectedResourceError.fromThrown("https://example.com/", "hello") + .message, + ).toBe("hello"); + }); + + it("returns an UnexpecteResourceError if an odd valud is provided", () => { + expect( + UnexpectedResourceError.fromThrown("https://example.com/", 5).message, + ).toBe("Error of type number thrown: 5"); + }); + }); + + describe("AggregateError", () => { + it("flattens aggregate errors provided to the constructor", () => { + const err1 = UnexpectedResourceError.fromThrown("https://abc.com", "1"); + const err2 = UnexpectedResourceError.fromThrown("https://abc.com", "2"); + const err3 = UnexpectedResourceError.fromThrown("https://abc.com", "3"); + const err4 = UnexpectedResourceError.fromThrown("https://abc.com", "4"); + const aggErr1 = new AggregateError([err1, err2]); + const aggErr2 = new AggregateError([err3, err4]); + const finalAgg = new AggregateError([aggErr1, aggErr2]); + expect(finalAgg.errors.length).toBe(4); + }); + }); + + describe("default messages", () => { + class ConcreteResourceError extends ResourceError { + readonly type = "concreteResourceError" as const; + } + class ConcreteErrorResult extends ErrorResult { + readonly type = "concreteErrorResult" as const; + } + + it("ResourceError fallsback to a default message if none is provided", () => { + expect(new ConcreteResourceError("https://example.com/").message).toBe( + "An unkown error for https://example.com/", + ); + }); + + it("ErrorResult fallsback to a default message if none is provided", () => { + expect(new ConcreteErrorResult().message).toBe( + "An unkown error was encountered.", + ); + }); + + it("InvalidUriError fallsback to a default message if none is provided", () => { + expect(new InvalidUriError("https://example.com/").message).toBe( + "https://example.com/ is an invalid uri.", + ); + }); + }); +});