UNPKG

glitchkit

Version:

A lightweight toolkit to create and manage expressive, structured, and reusable error types. Perfect for APIs, services, and glitchy adventures

148 lines (147 loc) 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const GlitchKitBaseError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseError")); const GlitchKitBaseHttpError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseHttpError")); const GlitchKitBadGatewayHttpError_1 = __importDefault(require("../GlitchKitBadGatewayHttpError")); // 502 const GlitchKitBadRequestHttpError_1 = __importDefault(require("../GlitchKitBadRequestHttpError")); // 400 const GlitchKitConflictHttpError_1 = __importDefault(require("../GlitchKitConflictHttpError")); // 409 const GlitchKitExpectationFailedHttpError_1 = __importDefault(require("../GlitchKitExpectationFailedHttpError")); // 417 const GlitchKitFailedDependencyHttpError_1 = __importDefault(require("../GlitchKitFailedDependencyHttpError")); // 424 const GlitchKitForbiddenHttpError_1 = __importDefault(require("../GlitchKitForbiddenHttpError")); // 403 const GlitchKitGatewayTimeoutHttpError_1 = __importDefault(require("../GlitchKitGatewayTimeoutHttpError")); // 504 const GlitchKitGoneHttpError_1 = __importDefault(require("../GlitchKitGoneHttpError")); // 410 const GlitchKitHttpVersionNotSupportedHttpError_1 = __importDefault(require("../GlitchKitHttpVersionNotSupportedHttpError")); // 505 const GlitchKitImATeapotHttpError_1 = __importDefault(require("../GlitchKitImATeapotHttpError")); // 418 const GlitchKitInsufficientStorageHttpError_1 = __importDefault(require("../GlitchKitInsufficientStorageHttpError")); // 507 const GlitchKitInternalServerErrorHttpError_1 = __importDefault(require("../GlitchKitInternalServerErrorHttpError")); // 500 const GlitchKitInternalServerHttpError_1 = __importDefault(require("../GlitchKitInternalServerHttpError")); // 500 const GlitchKitLengthRequiredHttpError_1 = __importDefault(require("../GlitchKitLengthRequiredHttpError")); // 411 const GlitchKitLockedHttpError_1 = __importDefault(require("../GlitchKitLockedHttpError")); // 423 const GlitchKitLoopDetectedHttpError_1 = __importDefault(require("../GlitchKitLoopDetectedHttpError")); // 508 const GlitchKitMethodNotAllowedHttpError_1 = __importDefault(require("../GlitchKitMethodNotAllowedHttpError")); // 405 const GlitchKitMisdirectedRequestHttpError_1 = __importDefault(require("../GlitchKitMisdirectedRequestHttpError")); // 421 const GlitchKitNetworkAuthenticationRequiredHttpError_1 = __importDefault(require("../GlitchKitNetworkAuthenticationRequiredHttpError")); // 511 const GlitchKitNotAcceptableHttpError_1 = __importDefault(require("../GlitchKitNotAcceptableHttpError")); // 406 const GlitchKitNotExtendedHttpError_1 = __importDefault(require("../GlitchKitNotExtendedHttpError")); // 510 const GlitchKitNotFoundHttpError_1 = __importDefault(require("../GlitchKitNotFoundHttpError")); // 404 const GlitchKitNotImplementedHttpError_1 = __importDefault(require("../GlitchKitNotImplementedHttpError")); // 501 const GlitchKitPayloadTooLargeHttpError_1 = __importDefault(require("../GlitchKitPayloadTooLargeHttpError")); // 413 const GlitchKitPaymentRequiredHttpError_1 = __importDefault(require("../GlitchKitPaymentRequiredHttpError")); // 402 const GlitchKitPreconditionFailedHttpError_1 = __importDefault(require("../GlitchKitPreconditionFailedHttpError")); // 412 const GlitchKitPreconditionRequiredHttpError_1 = __importDefault(require("../GlitchKitPreconditionRequiredHttpError")); // 428 const GlitchKitProxyAuthenticationRequiredHttpError_1 = __importDefault(require("../GlitchKitProxyAuthenticationRequiredHttpError")); // 407 const GlitchKitRangeNotSatisfiableHttpError_1 = __importDefault(require("../GlitchKitRangeNotSatisfiableHttpError")); // 416 const GlitchKitRequestHeaderFieldsTooLargeHttpError_1 = __importDefault(require("../GlitchKitRequestHeaderFieldsTooLargeHttpError")); // 431 const GlitchKitRequestTimeoutHttpError_1 = __importDefault(require("../GlitchKitRequestTimeoutHttpError")); // 408 const GlitchKitServiceUnavailableHttpError_1 = __importDefault(require("../GlitchKitServiceUnavailableHttpError")); // 503 const GlitchKitTooEarlyHttpError_1 = __importDefault(require("../GlitchKitTooEarlyHttpError")); // 425 const GlitchKitTooManyRequestsHttpError_1 = __importDefault(require("../GlitchKitTooManyRequestsHttpError")); // 429 const GlitchKitUnauthorizedHttpError_1 = __importDefault(require("../GlitchKitUnauthorizedHttpError")); // 401 const GlitchKitUnavailableForLegalReasonsHttpError_1 = __importDefault(require("../GlitchKitUnavailableForLegalReasonsHttpError")); // 451 const GlitchKitUnprocessableEntityHttpError_1 = __importDefault(require("../GlitchKitUnprocessableEntityHttpError")); // 422 const GlitchKitUnsupportedMediaTypeHttpError_1 = __importDefault(require("../GlitchKitUnsupportedMediaTypeHttpError")); // 415 const GlitchKitUpgradeRequiredHttpError_1 = __importDefault(require("../GlitchKitUpgradeRequiredHttpError")); // 426 const GlitchKitUriTooLongHttpError_1 = __importDefault(require("../GlitchKitUriTooLongHttpError")); // 414 const GlitchKitVariantAlsoNegotiatesHttpError_1 = __importDefault(require("../GlitchKitVariantAlsoNegotiatesHttpError")); // 506 describe('HttpError Generics', () => { const ErrorClasses = [ GlitchKitBadRequestHttpError_1.default, GlitchKitConflictHttpError_1.default, GlitchKitExpectationFailedHttpError_1.default, GlitchKitFailedDependencyHttpError_1.default, GlitchKitForbiddenHttpError_1.default, GlitchKitGoneHttpError_1.default, GlitchKitImATeapotHttpError_1.default, GlitchKitLengthRequiredHttpError_1.default, GlitchKitLockedHttpError_1.default, GlitchKitMethodNotAllowedHttpError_1.default, GlitchKitMisdirectedRequestHttpError_1.default, GlitchKitNotAcceptableHttpError_1.default, GlitchKitNotFoundHttpError_1.default, GlitchKitPayloadTooLargeHttpError_1.default, GlitchKitPaymentRequiredHttpError_1.default, GlitchKitPreconditionFailedHttpError_1.default, GlitchKitPreconditionRequiredHttpError_1.default, GlitchKitProxyAuthenticationRequiredHttpError_1.default, GlitchKitRangeNotSatisfiableHttpError_1.default, GlitchKitRequestHeaderFieldsTooLargeHttpError_1.default, GlitchKitRequestTimeoutHttpError_1.default, GlitchKitTooEarlyHttpError_1.default, GlitchKitTooManyRequestsHttpError_1.default, GlitchKitUnauthorizedHttpError_1.default, GlitchKitUnavailableForLegalReasonsHttpError_1.default, GlitchKitUnprocessableEntityHttpError_1.default, GlitchKitUnsupportedMediaTypeHttpError_1.default, GlitchKitUpgradeRequiredHttpError_1.default, GlitchKitUriTooLongHttpError_1.default, GlitchKitBadGatewayHttpError_1.default, GlitchKitGatewayTimeoutHttpError_1.default, GlitchKitHttpVersionNotSupportedHttpError_1.default, GlitchKitInsufficientStorageHttpError_1.default, GlitchKitInternalServerErrorHttpError_1.default, GlitchKitLoopDetectedHttpError_1.default, GlitchKitNetworkAuthenticationRequiredHttpError_1.default, GlitchKitNotExtendedHttpError_1.default, GlitchKitNotImplementedHttpError_1.default, GlitchKitServiceUnavailableHttpError_1.default, GlitchKitVariantAlsoNegotiatesHttpError_1.default, GlitchKitInternalServerHttpError_1.default, ]; const DUMMY_URL = 'https://example.com'; const DUMMY_REQUEST = { method: 'GET', headers: { 'Content-Type': 'application/json' } }; const DUMMY_RESPONSE = { status: 500, headers: { 'Content-Type': 'application/json' } }; const DUMMY_ERROR_CODE = 1001; const DUMMY_ERROR_MESSAGE = 'Test Error message'; it('should be instance of correct BaseError', () => { for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); expect(errorInstance).toBeInstanceOf(ErrorClass); expect(ErrorClass.isInstance(errorInstance)).toBe(true); expect(GlitchKitBaseError_1.default.isInstance(errorInstance)).toBe(true); expect(GlitchKitBaseHttpError_1.default.isInstance(errorInstance)).toBe(true); } }); it('should be instance of correct initialization', () => { for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); expect(errorInstance.url).toBeUndefined(); expect(errorInstance.request).toBeUndefined(); expect(errorInstance.response).toBeUndefined(); expect(errorInstance.statusCode).toBeGreaterThanOrEqual(399); expect(errorInstance.statusCode).toBeLessThanOrEqual(600); } }); it('should assign collect attribute values 1', () => { for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); errorInstance.withUrl(DUMMY_URL); expect(errorInstance.url).toBe(DUMMY_URL); errorInstance.withRequest(DUMMY_REQUEST).withResponse(DUMMY_RESPONSE); expect(errorInstance.request).toEqual(DUMMY_REQUEST); expect(errorInstance.response).toEqual(DUMMY_RESPONSE); errorInstance.withStatusCode(900); expect(errorInstance.statusCode).toBe(900); const errorJson = errorInstance.toJSON(); expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE); } }); it('should assign collect attribute values 2', () => { for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); errorInstance.url = DUMMY_URL; expect(errorInstance.url).toBe(DUMMY_URL); errorInstance.request = DUMMY_REQUEST; expect(errorInstance.request).toEqual(DUMMY_REQUEST); errorInstance.response = DUMMY_RESPONSE; expect(errorInstance.response).toEqual(DUMMY_RESPONSE); errorInstance.statusCode = 900; expect(errorInstance.statusCode).toBe(900); const errorJson = errorInstance.toJSON(); expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE); } }); }); // We recommend installing an extension to run jest tests.