rabbitmq-with-retry-and-dlq 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +235 -139
- package/dist/consumerMq.d.ts +90 -3
- package/dist/consumerMq.d.ts.map +1 -1
- package/dist/consumerMq.js +319 -71
- package/dist/consumerMq.js.map +1 -1
- package/dist/publisherMq.d.ts +4 -71
- package/dist/publisherMq.d.ts.map +1 -1
- package/dist/publisherMq.js +72 -251
- package/dist/publisherMq.js.map +1 -1
- package/dist/types.d.ts +12 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/test-connection.d.ts +0 -2
- package/dist/test-connection.d.ts.map +0 -1
- package/dist/test-connection.js +0 -38
- package/dist/test-connection.js.map +0 -1
- package/dist/test-wrong-url.d.ts +0 -2
- package/dist/test-wrong-url.d.ts.map +0 -1
- package/dist/test-wrong-url.js +0 -34
- package/dist/test-wrong-url.js.map +0 -1
- package/dist/test.d.ts +0 -19
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -446
- package/dist/test.js.map +0 -1
package/dist/test.js
DELETED
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Comprehensive Test Suite for rabbitmq-with-retry-and-dlq
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* 1. Set RABBITMQ_URL environment variable (or modify the URL in this file)
|
|
7
|
-
* 2. Run: npm test
|
|
8
|
-
*
|
|
9
|
-
* Tests:
|
|
10
|
-
* ✓ Connection with correct URL
|
|
11
|
-
* ✓ Connection with wrong URL (error handling)
|
|
12
|
-
* ✓ Connection status checks
|
|
13
|
-
* ✓ Assert queues with retry config
|
|
14
|
-
* ✓ Publish to queue
|
|
15
|
-
* ✓ Publish to exchange
|
|
16
|
-
* ✓ Consumer with retry mechanism
|
|
17
|
-
* ✓ Graceful shutdown
|
|
18
|
-
*/
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
const rabbitmq_with_retry_and_dlq_1 = require("rabbitmq-with-retry-and-dlq");
|
|
21
|
-
// ============================================
|
|
22
|
-
// CONFIGURATION
|
|
23
|
-
// ============================================
|
|
24
|
-
const RABBITMQ_URL = process.env.RABBITMQ_URL || 'amqp://localhost:5672';
|
|
25
|
-
const TEST_QUEUE = 'test_orders_' + Date.now();
|
|
26
|
-
const TEST_EXCHANGE = 'test_exchange_' + Date.now();
|
|
27
|
-
// Test counters
|
|
28
|
-
let testsRun = 0;
|
|
29
|
-
let testsPassed = 0;
|
|
30
|
-
let testsFailed = 0;
|
|
31
|
-
// ============================================
|
|
32
|
-
// HELPER FUNCTIONS
|
|
33
|
-
// ============================================
|
|
34
|
-
function log(message) {
|
|
35
|
-
console.log(`\n${'='.repeat(60)}`);
|
|
36
|
-
console.log(message);
|
|
37
|
-
console.log('='.repeat(60));
|
|
38
|
-
}
|
|
39
|
-
function pass(testName) {
|
|
40
|
-
testsRun++;
|
|
41
|
-
testsPassed++;
|
|
42
|
-
console.log(`✓ PASS: ${testName}`);
|
|
43
|
-
}
|
|
44
|
-
function fail(testName, error) {
|
|
45
|
-
testsRun++;
|
|
46
|
-
testsFailed++;
|
|
47
|
-
console.error(`✗ FAIL: ${testName}`);
|
|
48
|
-
console.error(` Error: ${error.message || error}`);
|
|
49
|
-
}
|
|
50
|
-
async function sleep(ms) {
|
|
51
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
52
|
-
}
|
|
53
|
-
// ============================================
|
|
54
|
-
// TEST 1: Connection with Wrong URL
|
|
55
|
-
// ============================================
|
|
56
|
-
async function testWrongURL() {
|
|
57
|
-
log('TEST 1: Connection with Wrong URL (Should Fail)');
|
|
58
|
-
try {
|
|
59
|
-
// This should timeout and throw error
|
|
60
|
-
await (0, rabbitmq_with_retry_and_dlq_1.initializeRabbitMQ)('amqp://wronghost:9999');
|
|
61
|
-
fail('Wrong URL should throw error', new Error('Connection succeeded but should have failed'));
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
// Expected to fail
|
|
65
|
-
if ((0, rabbitmq_with_retry_and_dlq_1.isPublisherConnected)() === false && (0, rabbitmq_with_retry_and_dlq_1.isConsumerConnected)() === false) {
|
|
66
|
-
pass('Wrong URL properly rejected');
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
fail('Wrong URL - connection status should be false', error);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// ============================================
|
|
74
|
-
// TEST 2: Connection with Correct URL
|
|
75
|
-
// ============================================
|
|
76
|
-
async function testCorrectURL() {
|
|
77
|
-
log('TEST 2: Connection with Correct URL');
|
|
78
|
-
try {
|
|
79
|
-
console.log(`Connecting to: ${RABBITMQ_URL}`);
|
|
80
|
-
await (0, rabbitmq_with_retry_and_dlq_1.initializeRabbitMQ)(RABBITMQ_URL);
|
|
81
|
-
// Check connection status
|
|
82
|
-
const pubConnected = (0, rabbitmq_with_retry_and_dlq_1.isPublisherConnected)();
|
|
83
|
-
const conConnected = (0, rabbitmq_with_retry_and_dlq_1.isConsumerConnected)();
|
|
84
|
-
console.log(` Publisher connected: ${pubConnected}`);
|
|
85
|
-
console.log(` Consumer connected: ${conConnected}`);
|
|
86
|
-
if (pubConnected && conConnected) {
|
|
87
|
-
pass('Connection established successfully');
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
fail('Connection status check', new Error('Status should be true after connection'));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
fail('Connection with correct URL', error);
|
|
95
|
-
throw error; // Stop tests if connection fails
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// ============================================
|
|
99
|
-
// TEST 3: Assert Queues with Retry Config
|
|
100
|
-
// ============================================
|
|
101
|
-
async function testAssertQueues() {
|
|
102
|
-
log('TEST 3: Assert Queues with Retry Config');
|
|
103
|
-
try {
|
|
104
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.assertQueues(TEST_QUEUE, {
|
|
105
|
-
durable: true,
|
|
106
|
-
retryConfig: {
|
|
107
|
-
maxRetries: 3,
|
|
108
|
-
retryDelayMs: 1000,
|
|
109
|
-
backoffStrategy: 'exponential',
|
|
110
|
-
jitterMs: 500,
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
console.log(` Queue asserted: ${TEST_QUEUE}`);
|
|
114
|
-
console.log(` Retry config: 3 retries, exponential backoff`);
|
|
115
|
-
pass('Assert queues with retry config');
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
fail('Assert queues', error);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// ============================================
|
|
122
|
-
// TEST 4: Assert Multiple Queues
|
|
123
|
-
// ============================================
|
|
124
|
-
async function testAssertMultipleQueues() {
|
|
125
|
-
log('TEST 4: Assert Multiple Queues');
|
|
126
|
-
try {
|
|
127
|
-
const queues = [`${TEST_QUEUE}_multi1`, `${TEST_QUEUE}_multi2`, `${TEST_QUEUE}_multi3`];
|
|
128
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.assertQueues(queues, {
|
|
129
|
-
retryConfig: {
|
|
130
|
-
maxRetries: 2,
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
console.log(` Queues asserted: ${queues.length}`);
|
|
134
|
-
pass('Assert multiple queues');
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
fail('Assert multiple queues', error);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// ============================================
|
|
141
|
-
// TEST 5: Assert Queue with Exchange
|
|
142
|
-
// ============================================
|
|
143
|
-
async function testAssertQueueWithExchange() {
|
|
144
|
-
log('TEST 5: Assert Queue with Exchange');
|
|
145
|
-
try {
|
|
146
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.assertQueues(`${TEST_QUEUE}_exchange`, {
|
|
147
|
-
exchangeName: TEST_EXCHANGE,
|
|
148
|
-
exchangeType: 'direct',
|
|
149
|
-
routingKey: 'test.order.created',
|
|
150
|
-
retryConfig: {
|
|
151
|
-
maxRetries: 3,
|
|
152
|
-
},
|
|
153
|
-
});
|
|
154
|
-
console.log(` Exchange asserted: ${TEST_EXCHANGE}`);
|
|
155
|
-
console.log(` Queue bound with routing key: test.order.created`);
|
|
156
|
-
pass('Assert queue with exchange');
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
fail('Assert queue with exchange', error);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// ============================================
|
|
163
|
-
// TEST 6: Publish to Queue
|
|
164
|
-
// ============================================
|
|
165
|
-
async function testPublishToQueue() {
|
|
166
|
-
log('TEST 6: Publish to Queue');
|
|
167
|
-
try {
|
|
168
|
-
const message = {
|
|
169
|
-
orderId: 'ORDER-TEST-001',
|
|
170
|
-
amount: 99.99,
|
|
171
|
-
timestamp: new Date().toISOString(),
|
|
172
|
-
};
|
|
173
|
-
const result = await rabbitmq_with_retry_and_dlq_1.publisher.publishToQueue({
|
|
174
|
-
queueName: TEST_QUEUE,
|
|
175
|
-
message,
|
|
176
|
-
options: {
|
|
177
|
-
persistent: true,
|
|
178
|
-
priority: 5,
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
if (result) {
|
|
182
|
-
console.log(` Message published: ${message.orderId}`);
|
|
183
|
-
pass('Publish to queue');
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
fail('Publish to queue', new Error('Publish returned false'));
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
fail('Publish to queue', error);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
// ============================================
|
|
194
|
-
// TEST 7: Publish to Exchange
|
|
195
|
-
// ============================================
|
|
196
|
-
async function testPublishToExchange() {
|
|
197
|
-
log('TEST 7: Publish to Exchange');
|
|
198
|
-
try {
|
|
199
|
-
const message = {
|
|
200
|
-
orderId: 'ORDER-EXCHANGE-001',
|
|
201
|
-
customer: 'John Doe',
|
|
202
|
-
timestamp: new Date().toISOString(),
|
|
203
|
-
};
|
|
204
|
-
const result = await rabbitmq_with_retry_and_dlq_1.publisher.publishToExchange({
|
|
205
|
-
exchangeName: TEST_EXCHANGE,
|
|
206
|
-
exchangeType: 'direct',
|
|
207
|
-
queueName: `${TEST_QUEUE}_exchange`,
|
|
208
|
-
routingKey: 'test.order.created',
|
|
209
|
-
message,
|
|
210
|
-
options: {
|
|
211
|
-
persistent: true,
|
|
212
|
-
},
|
|
213
|
-
});
|
|
214
|
-
if (result) {
|
|
215
|
-
console.log(` Message published to exchange: ${message.orderId}`);
|
|
216
|
-
pass('Publish to exchange');
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
fail('Publish to exchange', new Error('Publish returned false'));
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
catch (error) {
|
|
223
|
-
fail('Publish to exchange', error);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
// ============================================
|
|
227
|
-
// TEST 8: Publish Multiple Messages
|
|
228
|
-
// ============================================
|
|
229
|
-
async function testPublishMultipleMessages() {
|
|
230
|
-
log('TEST 8: Publish Multiple Messages');
|
|
231
|
-
try {
|
|
232
|
-
const messages = [
|
|
233
|
-
{ orderId: 'BATCH-001', amount: 10 },
|
|
234
|
-
{ orderId: 'BATCH-002', amount: 20 },
|
|
235
|
-
{ orderId: 'BATCH-003', amount: 30 },
|
|
236
|
-
];
|
|
237
|
-
for (const msg of messages) {
|
|
238
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.publishToQueue({
|
|
239
|
-
queueName: TEST_QUEUE,
|
|
240
|
-
message: msg,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
console.log(` Published ${messages.length} messages`);
|
|
244
|
-
pass('Publish multiple messages');
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
fail('Publish multiple messages', error);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// ============================================
|
|
251
|
-
// TEST 9: Consumer with Success
|
|
252
|
-
// ============================================
|
|
253
|
-
async function testConsumerSuccess() {
|
|
254
|
-
log('TEST 9: Consumer with Success');
|
|
255
|
-
try {
|
|
256
|
-
let messagesProcessed = 0;
|
|
257
|
-
const targetMessages = 3;
|
|
258
|
-
// Set up error handler
|
|
259
|
-
rabbitmq_with_retry_and_dlq_1.consumer.on('error', (errorEvent) => {
|
|
260
|
-
console.error(' Consumer error:', errorEvent.type);
|
|
261
|
-
});
|
|
262
|
-
// Start consumer
|
|
263
|
-
await rabbitmq_with_retry_and_dlq_1.consumer.consumeQueue({
|
|
264
|
-
queueName: TEST_QUEUE,
|
|
265
|
-
onMessage: async (message) => {
|
|
266
|
-
console.log(` Processing message: ${message.orderId || message.id || JSON.stringify(message).substring(0, 50)}`);
|
|
267
|
-
messagesProcessed++;
|
|
268
|
-
// Successfully process (no error = auto-ack)
|
|
269
|
-
},
|
|
270
|
-
options: {
|
|
271
|
-
prefetch: 5,
|
|
272
|
-
},
|
|
273
|
-
});
|
|
274
|
-
console.log(' Consumer started, waiting for messages...');
|
|
275
|
-
// Wait for messages to be processed
|
|
276
|
-
await sleep(2000);
|
|
277
|
-
if (messagesProcessed >= targetMessages) {
|
|
278
|
-
console.log(` Processed ${messagesProcessed} messages`);
|
|
279
|
-
pass('Consumer processed messages successfully');
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
console.log(` Processed ${messagesProcessed} messages (expected at least ${targetMessages})`);
|
|
283
|
-
pass('Consumer started (may need more time to process all)');
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
catch (error) {
|
|
287
|
-
fail('Consumer with success', error);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
// ============================================
|
|
291
|
-
// TEST 10: Consumer with Retry (Simulated Failure)
|
|
292
|
-
// ============================================
|
|
293
|
-
async function testConsumerWithRetry() {
|
|
294
|
-
log('TEST 10: Consumer with Retry (Simulated Failure)');
|
|
295
|
-
try {
|
|
296
|
-
const retryQueue = `${TEST_QUEUE}_retry_test`;
|
|
297
|
-
// Assert queue with retry
|
|
298
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.assertQueues(retryQueue, {
|
|
299
|
-
retryConfig: {
|
|
300
|
-
maxRetries: 2,
|
|
301
|
-
retryDelayMs: 500,
|
|
302
|
-
backoffStrategy: 'exponential',
|
|
303
|
-
},
|
|
304
|
-
});
|
|
305
|
-
// Publish a message that will fail
|
|
306
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.publishToQueue({
|
|
307
|
-
queueName: retryQueue,
|
|
308
|
-
message: { orderId: 'WILL-FAIL', shouldFail: true },
|
|
309
|
-
});
|
|
310
|
-
let attemptCount = 0;
|
|
311
|
-
// Start consumer that fails first 2 times, succeeds on 3rd
|
|
312
|
-
await rabbitmq_with_retry_and_dlq_1.consumer.consumeQueue({
|
|
313
|
-
queueName: retryQueue,
|
|
314
|
-
onMessage: async (message) => {
|
|
315
|
-
attemptCount++;
|
|
316
|
-
console.log(` Attempt ${attemptCount}: ${message.orderId}`);
|
|
317
|
-
if (attemptCount < 3 && message.shouldFail) {
|
|
318
|
-
throw new Error('Simulated processing failure');
|
|
319
|
-
}
|
|
320
|
-
// Success on 3rd attempt
|
|
321
|
-
console.log(` Success after ${attemptCount} attempts`);
|
|
322
|
-
},
|
|
323
|
-
});
|
|
324
|
-
// Wait for retries
|
|
325
|
-
await sleep(3000);
|
|
326
|
-
console.log(` Total attempts: ${attemptCount}`);
|
|
327
|
-
pass('Consumer with retry mechanism');
|
|
328
|
-
}
|
|
329
|
-
catch (error) {
|
|
330
|
-
fail('Consumer with retry', error);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// ============================================
|
|
334
|
-
// TEST 11: Delete Queues
|
|
335
|
-
// ============================================
|
|
336
|
-
async function testDeleteQueues() {
|
|
337
|
-
log('TEST 11: Delete Queues (Cleanup)');
|
|
338
|
-
try {
|
|
339
|
-
// Delete test queues
|
|
340
|
-
await rabbitmq_with_retry_and_dlq_1.publisher.deleteQueues([
|
|
341
|
-
TEST_QUEUE,
|
|
342
|
-
`${TEST_QUEUE}_multi1`,
|
|
343
|
-
`${TEST_QUEUE}_multi2`,
|
|
344
|
-
`${TEST_QUEUE}_multi3`,
|
|
345
|
-
`${TEST_QUEUE}_exchange`,
|
|
346
|
-
`${TEST_QUEUE}_retry_test`,
|
|
347
|
-
], {
|
|
348
|
-
includeRetry: true,
|
|
349
|
-
includeDLQ: true,
|
|
350
|
-
});
|
|
351
|
-
console.log(' Test queues deleted');
|
|
352
|
-
pass('Delete queues');
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
// Queue deletion might fail if they don't exist, that's ok
|
|
356
|
-
console.log(' Queue deletion completed (some may not exist)');
|
|
357
|
-
pass('Delete queues (best effort)');
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
// ============================================
|
|
361
|
-
// TEST 12: Graceful Shutdown
|
|
362
|
-
// ============================================
|
|
363
|
-
async function testGracefulShutdown() {
|
|
364
|
-
log('TEST 12: Graceful Shutdown');
|
|
365
|
-
try {
|
|
366
|
-
await (0, rabbitmq_with_retry_and_dlq_1.closeRabbitMQ)();
|
|
367
|
-
// Check connection status after close
|
|
368
|
-
const pubConnected = (0, rabbitmq_with_retry_and_dlq_1.isPublisherConnected)();
|
|
369
|
-
const conConnected = (0, rabbitmq_with_retry_and_dlq_1.isConsumerConnected)();
|
|
370
|
-
console.log(` Publisher connected: ${pubConnected}`);
|
|
371
|
-
console.log(` Consumer connected: ${conConnected}`);
|
|
372
|
-
if (!pubConnected && !conConnected) {
|
|
373
|
-
pass('Graceful shutdown');
|
|
374
|
-
}
|
|
375
|
-
else {
|
|
376
|
-
fail('Graceful shutdown', new Error('Connections should be closed'));
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
catch (error) {
|
|
380
|
-
fail('Graceful shutdown', error);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
// ============================================
|
|
384
|
-
// MAIN TEST RUNNER
|
|
385
|
-
// ============================================
|
|
386
|
-
async function runAllTests() {
|
|
387
|
-
console.log('\n');
|
|
388
|
-
console.log('╔════════════════════════════════════════════════════════════╗');
|
|
389
|
-
console.log('║ RabbitMQ with Retry and DLQ - Test Suite ║');
|
|
390
|
-
console.log('╚════════════════════════════════════════════════════════════╝');
|
|
391
|
-
console.log(`\nRabbitMQ URL: ${RABBITMQ_URL}`);
|
|
392
|
-
console.log(`Test Queue: ${TEST_QUEUE}`);
|
|
393
|
-
console.log(`Test Exchange: ${TEST_EXCHANGE}\n`);
|
|
394
|
-
try {
|
|
395
|
-
// Run tests in sequence
|
|
396
|
-
await testWrongURL();
|
|
397
|
-
await sleep(500);
|
|
398
|
-
await testCorrectURL();
|
|
399
|
-
await sleep(500);
|
|
400
|
-
await testAssertQueues();
|
|
401
|
-
await sleep(300);
|
|
402
|
-
await testAssertMultipleQueues();
|
|
403
|
-
await sleep(300);
|
|
404
|
-
await testAssertQueueWithExchange();
|
|
405
|
-
await sleep(300);
|
|
406
|
-
await testPublishToQueue();
|
|
407
|
-
await sleep(300);
|
|
408
|
-
await testPublishToExchange();
|
|
409
|
-
await sleep(300);
|
|
410
|
-
await testPublishMultipleMessages();
|
|
411
|
-
await sleep(500);
|
|
412
|
-
await testConsumerSuccess();
|
|
413
|
-
await sleep(500);
|
|
414
|
-
await testConsumerWithRetry();
|
|
415
|
-
await sleep(500);
|
|
416
|
-
await testDeleteQueues();
|
|
417
|
-
await sleep(300);
|
|
418
|
-
await testGracefulShutdown();
|
|
419
|
-
}
|
|
420
|
-
catch (error) {
|
|
421
|
-
console.error('\n❌ Test suite aborted due to critical error:', error);
|
|
422
|
-
}
|
|
423
|
-
// Print summary
|
|
424
|
-
console.log('\n');
|
|
425
|
-
console.log('╔════════════════════════════════════════════════════════════╗');
|
|
426
|
-
console.log('║ TEST SUMMARY ║');
|
|
427
|
-
console.log('╚════════════════════════════════════════════════════════════╝');
|
|
428
|
-
console.log(`\nTotal Tests: ${testsRun}`);
|
|
429
|
-
console.log(`✓ Passed: ${testsPassed}`);
|
|
430
|
-
console.log(`✗ Failed: ${testsFailed}`);
|
|
431
|
-
console.log(`Success Rate: ${testsRun > 0 ? ((testsPassed / testsRun) * 100).toFixed(1) : 0}%\n`);
|
|
432
|
-
if (testsFailed === 0) {
|
|
433
|
-
console.log('🎉 All tests passed!\n');
|
|
434
|
-
process.exit(0);
|
|
435
|
-
}
|
|
436
|
-
else {
|
|
437
|
-
console.log('❌ Some tests failed. Please review the output above.\n');
|
|
438
|
-
process.exit(1);
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
// Run tests
|
|
442
|
-
runAllTests().catch((error) => {
|
|
443
|
-
console.error('\n❌ Fatal error running tests:', error);
|
|
444
|
-
process.exit(1);
|
|
445
|
-
});
|
|
446
|
-
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../test.ts"],"names":[],"mappings":"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"}
|