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
JavaScript
"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);
}
});
});