UNPKG

glitchkit

Version:

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

178 lines (177 loc) 11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const GlitchKitBaseDatabaseError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseDatabaseError")); const GlitchKitBaseError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseError")); const GlitchKitDatabase_1 = __importDefault(require("../../utility/GlitchKitDatabase")); const GlitchKitMetadata_1 = __importDefault(require("../../utility/GlitchKitMetadata")); const GlitchKitTraceability_1 = __importDefault(require("../../utility/GlitchKitTraceability")); const GlitchKitPlanLimitExceededError_1 = __importDefault(require("./../cloud/GlitchKitPlanLimitExceededError")); const GlitchKitQuotaExceededError_1 = __importDefault(require("./../cloud/GlitchKitQuotaExceededError")); const GlitchKitReplicaLagError_1 = __importDefault(require("./../cloud/GlitchKitReplicaLagError")); const GlitchKitAuthenticationFailedError_1 = __importDefault(require("./../connectionErrors/GlitchKitAuthenticationFailedError")); const GlitchKitConnectionRefusedError_1 = __importDefault(require("./../connectionErrors/GlitchKitConnectionRefusedError")); const GlitchKitSSLRequiredError_1 = __importDefault(require("./../connectionErrors/GlitchKitSSLRequiredError")); const GlitchKitTimeoutError_1 = __importDefault(require("./../connectionErrors/GlitchKitTimeoutError")); const GlitchKitTooManyConnectionsError_1 = __importDefault(require("./../connectionErrors/GlitchKitTooManyConnectionsError")); const GlitchKitCheckConstraintError_1 = __importDefault(require("./../constraintViolations/GlitchKitCheckConstraintError")); const GlitchKitForeignKeyViolationError_1 = __importDefault(require("./../constraintViolations/GlitchKitForeignKeyViolationError")); const GlitchKitNotNullConstraintError_1 = __importDefault(require("./../constraintViolations/GlitchKitNotNullConstraintError")); const GlitchKitUniqueConstraintError_1 = __importDefault(require("./../constraintViolations/GlitchKitUniqueConstraintError")); const GlitchKitDataTruncationError_1 = __importDefault(require("./../dataErrors/GlitchKitDataTruncationError")); const GlitchKitInvalidEnumValueError_1 = __importDefault(require("./../dataErrors/GlitchKitInvalidEnumValueError")); const GlitchKitOverflowError_1 = __importDefault(require("./../dataErrors/GlitchKitOverflowError")); const GlitchKitUnderflowError_1 = __importDefault(require("./../dataErrors/GlitchKitUnderflowError")); const GlitchKitDriverError_1 = __importDefault(require("./../ormError/GlitchKitDriverError")); const GlitchKitMigrationError_1 = __importDefault(require("./../ormError/GlitchKitMigrationError")); const GlitchKitModelSyncError_1 = __importDefault(require("./../ormError/GlitchKitModelSyncError")); const GlitchKitInvalidColumnError_1 = __importDefault(require("./../queryErrors/GlitchKitInvalidColumnError")); const GlitchKitInvalidDataTypeError_1 = __importDefault(require("./../queryErrors/GlitchKitInvalidDataTypeError")); const GlitchKitInvalidTableError_1 = __importDefault(require("./../queryErrors/GlitchKitInvalidTableError")); const GlitchKitQueryTimeoutError_1 = __importDefault(require("./../queryErrors/GlitchKitQueryTimeoutError")); const GlitchKitSyntaxError_1 = __importDefault(require("./../queryErrors/GlitchKitSyntaxError")); const GlitchKitDeadlockDetectedError_1 = __importDefault(require("./../transactionsErrors/GlitchKitDeadlockDetectedError")); const GlitchKitLockWaitTimeoutError_1 = __importDefault(require("./../transactionsErrors/GlitchKitLockWaitTimeoutError")); const GlitchKitSerializationFailureError_1 = __importDefault(require("./../transactionsErrors/GlitchKitSerializationFailureError")); const GlitchKitTransactionAbortedError_1 = __importDefault(require("./../transactionsErrors/GlitchKitTransactionAbortedError")); describe('HttpError Generics', () => { const ErrorClasses = [ // Cloud Errors GlitchKitPlanLimitExceededError_1.default, GlitchKitQuotaExceededError_1.default, GlitchKitReplicaLagError_1.default, // Connection Errors GlitchKitAuthenticationFailedError_1.default, GlitchKitConnectionRefusedError_1.default, GlitchKitSSLRequiredError_1.default, GlitchKitTimeoutError_1.default, GlitchKitTooManyConnectionsError_1.default, // Constraint Violations GlitchKitCheckConstraintError_1.default, GlitchKitForeignKeyViolationError_1.default, GlitchKitNotNullConstraintError_1.default, GlitchKitUniqueConstraintError_1.default, // Data Errors GlitchKitDataTruncationError_1.default, GlitchKitInvalidEnumValueError_1.default, GlitchKitOverflowError_1.default, GlitchKitUnderflowError_1.default, // ORM Errors GlitchKitDriverError_1.default, GlitchKitMigrationError_1.default, GlitchKitModelSyncError_1.default, // Query Errors GlitchKitInvalidColumnError_1.default, GlitchKitInvalidDataTypeError_1.default, GlitchKitInvalidTableError_1.default, GlitchKitQueryTimeoutError_1.default, GlitchKitSyntaxError_1.default, // Transactions Errors GlitchKitDeadlockDetectedError_1.default, GlitchKitLockWaitTimeoutError_1.default, GlitchKitSerializationFailureError_1.default, GlitchKitTransactionAbortedError_1.default, ]; const DUMMY_ERROR_CODE = 1001; const DUMMY_ERROR_MESSAGE = 'Test Error message'; const DUMMY_DATABASE_NAME = 'testDatabase'; const DUMMY_DATABASE_URL = 'http://localhost:5432/testDatabase'; const DUMMY_DATABASE_TYPE = 'postgresql'; 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(GlitchKitBaseDatabaseError_1.default.isInstance(errorInstance)).toBe(true); try { errorInstance.raise(); } catch (e) { expect(e).toBeInstanceOf(ErrorClass); } } }); it('should be instance of correct initialization', () => { // private _info: Object | undefined; // private _context: Object | undefined; // private _tags: string[] = []; // private _category: string | undefined; // private _cause: string | undefined; for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); expect(errorInstance.message).toBe(DUMMY_ERROR_MESSAGE); expect(errorInstance.errorCode).toBe(DUMMY_ERROR_CODE); const errorJson = errorInstance.toJSON(); expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE); } }); it('should assign collect attribute values 1', () => { const glitchKitMetadata = new GlitchKitMetadata_1.default(); glitchKitMetadata.info = { key: 'value' }; glitchKitMetadata.context = {}; glitchKitMetadata.tags = ['tag1', 'tag2']; glitchKitMetadata.category = 'testCategory'; glitchKitMetadata.cause = 'testCause'; const glitchKitTraceability = new GlitchKitTraceability_1.default(); glitchKitTraceability.operation = 'testOperation'; glitchKitTraceability.reported = true; glitchKitTraceability.source = 'testSource'; glitchKitTraceability.traceId = 'testTraceId'; const glitchKitDatabase = new GlitchKitDatabase_1.default(); glitchKitDatabase.databaseName = DUMMY_DATABASE_NAME; glitchKitDatabase.databaseUrl = DUMMY_DATABASE_URL; glitchKitDatabase.databaseType = DUMMY_DATABASE_TYPE; for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); errorInstance.database = glitchKitDatabase; errorInstance.metadata = glitchKitMetadata; errorInstance.traceability = glitchKitTraceability; errorInstance.errorCode = DUMMY_ERROR_CODE; expect(errorInstance.errorCode).toBe(DUMMY_ERROR_CODE); errorInstance.durationMs = 500; expect(errorInstance.durationMs).toBe(500); expect(errorInstance.timestamp).toBeInstanceOf(Date); const errorJson = errorInstance.toJSON(); expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE); expect(errorInstance.database.databaseName).toBe(DUMMY_DATABASE_NAME); expect(errorInstance.database.databaseUrl).toBe(DUMMY_DATABASE_URL); expect(errorInstance.database.databaseType).toBe(DUMMY_DATABASE_TYPE); } }); it('should assign collect attribute values 2', () => { const glitchKitMetadata = new GlitchKitMetadata_1.default(); glitchKitMetadata.withInfo({ key: 'value' }); glitchKitMetadata.withContext({}); glitchKitMetadata.withTags(['tag1', 'tag2']); glitchKitMetadata.withCategory('testCategory'); glitchKitMetadata.withCause('testCause'); const glitchKitTraceability = new GlitchKitTraceability_1.default(); glitchKitTraceability.withOperation('testOperation'); glitchKitTraceability.withReported(true); glitchKitTraceability.withSource('testSource'); glitchKitTraceability.withTraceId('testTraceId'); const glitchKitDatabase = new GlitchKitDatabase_1.default(); glitchKitDatabase.withDatabaseName('testDatabase'); glitchKitDatabase.withDatabaseUrl('http://localhost:5432/testDatabase'); glitchKitDatabase.withDatabaseType('postgresql'); for (const ErrorClass of ErrorClasses) { const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE); errorInstance.withDatabase(glitchKitDatabase); errorInstance.withMetadata(glitchKitMetadata); errorInstance.withTraceability(glitchKitTraceability); errorInstance.withErrorCode(DUMMY_ERROR_CODE); expect(errorInstance.errorCode).toBe(DUMMY_ERROR_CODE); errorInstance.withDurationMs(500); expect(errorInstance.durationMs).toBe(500); expect(errorInstance.timestamp).toBeInstanceOf(Date); const errorJson = errorInstance.toJSON(); expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE); expect(errorInstance.database.databaseName).toBe(DUMMY_DATABASE_NAME); expect(errorInstance.database.databaseUrl).toBe(DUMMY_DATABASE_URL); expect(errorInstance.database.databaseType).toBe(DUMMY_DATABASE_TYPE); } }); });