@woovi/kafka 0.1.4 → 0.1.7
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/dist/index.cjs +57 -15
- package/dist/index.d.ts +18 -0
- package/dist/index.js +31 -1
- package/dist/test-utils.cjs +43 -21
- package/dist/test-utils.d.ts +31 -0
- package/dist/test-utils.js +36 -20
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -24,37 +24,42 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
getMetricsContentType: ()=>getMetricsContentType,
|
|
28
27
|
logLevel: ()=>external_kafkajs_namespaceObject.logLevel,
|
|
29
|
-
WooviProducer: ()=>WooviProducer,
|
|
30
|
-
parseMessage: ()=>parseMessage,
|
|
31
|
-
enableDefaultMetrics: ()=>enableDefaultMetrics,
|
|
32
28
|
consumerLag: ()=>consumerLag,
|
|
33
|
-
messagesProducedTotal: ()=>messagesProducedTotal,
|
|
34
29
|
createKafkaFromEnv: ()=>createKafkaFromEnv,
|
|
35
|
-
createProducer: ()=>createProducer,
|
|
36
30
|
healthCheck: ()=>healthCheck,
|
|
37
31
|
createKafka: ()=>createKafka,
|
|
38
|
-
WooviConsumer: ()=>WooviConsumer,
|
|
39
32
|
batchProcessingDuration: ()=>batchProcessingDuration,
|
|
40
33
|
lastMessageTimestamp: ()=>lastMessageTimestamp,
|
|
41
|
-
getMetrics: ()=>getMetrics,
|
|
42
|
-
messageProcessingDuration: ()=>messageProcessingDuration,
|
|
43
34
|
messagesProcessedTotal: ()=>messagesProcessedTotal,
|
|
44
35
|
onShutdown: ()=>onShutdown,
|
|
45
|
-
batchSize: ()=>batchSize,
|
|
46
|
-
Kafka: ()=>external_kafkajs_namespaceObject.Kafka,
|
|
47
|
-
kafkaRegistry: ()=>kafkaRegistry,
|
|
48
36
|
produceLatency: ()=>produceLatency,
|
|
49
37
|
createConsumer: ()=>createConsumer,
|
|
50
38
|
getKafka: ()=>getKafka,
|
|
51
|
-
messagesFailedTotal: ()=>messagesFailedTotal,
|
|
52
39
|
resetMetrics: ()=>resetMetrics,
|
|
53
|
-
getMessageHeaders: ()=>getMessageHeaders
|
|
40
|
+
getMessageHeaders: ()=>getMessageHeaders,
|
|
41
|
+
getMetricsContentType: ()=>getMetricsContentType,
|
|
42
|
+
WooviProducer: ()=>WooviProducer,
|
|
43
|
+
parseMessage: ()=>parseMessage,
|
|
44
|
+
enableDefaultMetrics: ()=>enableDefaultMetrics,
|
|
45
|
+
messagesProducedTotal: ()=>messagesProducedTotal,
|
|
46
|
+
messageProcessingDuration: ()=>messageProcessingDuration,
|
|
47
|
+
createProducer: ()=>createProducer,
|
|
48
|
+
WooviConsumer: ()=>WooviConsumer,
|
|
49
|
+
getMetrics: ()=>getMetrics,
|
|
50
|
+
batchSize: ()=>batchSize,
|
|
51
|
+
Kafka: ()=>external_kafkajs_namespaceObject.Kafka,
|
|
52
|
+
isTestMode: ()=>isTestMode,
|
|
53
|
+
disableTestMode: ()=>disableTestMode,
|
|
54
|
+
kafkaRegistry: ()=>kafkaRegistry,
|
|
55
|
+
setMockKafkaForTestMode: ()=>setMockKafkaForTestMode,
|
|
56
|
+
messagesFailedTotal: ()=>messagesFailedTotal,
|
|
57
|
+
enableTestMode: ()=>enableTestMode
|
|
54
58
|
});
|
|
55
59
|
const external_kafkajs_namespaceObject = require("kafkajs");
|
|
56
60
|
const logger_namespaceObject = require("@woovi/logger");
|
|
57
61
|
let kafkaInstance = null;
|
|
62
|
+
let testMode = false;
|
|
58
63
|
const shutdownCallbacks = [];
|
|
59
64
|
let shutdownRegistered = false;
|
|
60
65
|
const kafkaLogger = logger_namespaceObject.logger.child({
|
|
@@ -104,7 +109,25 @@ function registerGracefulShutdown() {
|
|
|
104
109
|
function onShutdown(callback) {
|
|
105
110
|
shutdownCallbacks.push(callback);
|
|
106
111
|
}
|
|
112
|
+
const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
|
|
113
|
+
function getGlobalState() {
|
|
114
|
+
const g = globalThis;
|
|
115
|
+
if (!g[WOOVI_KAFKA_MOCK_KEY]) g[WOOVI_KAFKA_MOCK_KEY] = {
|
|
116
|
+
mock: null,
|
|
117
|
+
testMode: false
|
|
118
|
+
};
|
|
119
|
+
return g[WOOVI_KAFKA_MOCK_KEY];
|
|
120
|
+
}
|
|
121
|
+
function setMockKafkaForTestMode(mock) {
|
|
122
|
+
const state = getGlobalState();
|
|
123
|
+
state.mock = mock;
|
|
124
|
+
state.testMode = true;
|
|
125
|
+
testMode = true;
|
|
126
|
+
}
|
|
107
127
|
function getKafka() {
|
|
128
|
+
const state = getGlobalState();
|
|
129
|
+
if (state.testMode && state.mock) return state.mock;
|
|
130
|
+
if (testMode && kafkaInstance) return kafkaInstance;
|
|
108
131
|
if (!kafkaInstance) throw new Error('Kafka not initialized. Call createKafka() first.');
|
|
109
132
|
return kafkaInstance;
|
|
110
133
|
}
|
|
@@ -164,6 +187,17 @@ async function healthCheck() {
|
|
|
164
187
|
};
|
|
165
188
|
}
|
|
166
189
|
}
|
|
190
|
+
function enableTestMode(mockKafka) {
|
|
191
|
+
testMode = true;
|
|
192
|
+
if (mockKafka) kafkaInstance = mockKafka;
|
|
193
|
+
}
|
|
194
|
+
function disableTestMode() {
|
|
195
|
+
testMode = false;
|
|
196
|
+
kafkaInstance = null;
|
|
197
|
+
}
|
|
198
|
+
function isTestMode() {
|
|
199
|
+
return testMode;
|
|
200
|
+
}
|
|
167
201
|
const external_prom_client_namespaceObject = require("prom-client");
|
|
168
202
|
const kafkaRegistry = new external_prom_client_namespaceObject.Registry();
|
|
169
203
|
const messageProcessingDuration = new external_prom_client_namespaceObject.Histogram({
|
|
@@ -707,12 +741,15 @@ exports.createConsumer = __webpack_exports__.createConsumer;
|
|
|
707
741
|
exports.createKafka = __webpack_exports__.createKafka;
|
|
708
742
|
exports.createKafkaFromEnv = __webpack_exports__.createKafkaFromEnv;
|
|
709
743
|
exports.createProducer = __webpack_exports__.createProducer;
|
|
744
|
+
exports.disableTestMode = __webpack_exports__.disableTestMode;
|
|
710
745
|
exports.enableDefaultMetrics = __webpack_exports__.enableDefaultMetrics;
|
|
746
|
+
exports.enableTestMode = __webpack_exports__.enableTestMode;
|
|
711
747
|
exports.getKafka = __webpack_exports__.getKafka;
|
|
712
748
|
exports.getMessageHeaders = __webpack_exports__.getMessageHeaders;
|
|
713
749
|
exports.getMetrics = __webpack_exports__.getMetrics;
|
|
714
750
|
exports.getMetricsContentType = __webpack_exports__.getMetricsContentType;
|
|
715
751
|
exports.healthCheck = __webpack_exports__.healthCheck;
|
|
752
|
+
exports.isTestMode = __webpack_exports__.isTestMode;
|
|
716
753
|
exports.kafkaRegistry = __webpack_exports__.kafkaRegistry;
|
|
717
754
|
exports.lastMessageTimestamp = __webpack_exports__.lastMessageTimestamp;
|
|
718
755
|
exports.logLevel = __webpack_exports__.logLevel;
|
|
@@ -724,6 +761,7 @@ exports.onShutdown = __webpack_exports__.onShutdown;
|
|
|
724
761
|
exports.parseMessage = __webpack_exports__.parseMessage;
|
|
725
762
|
exports.produceLatency = __webpack_exports__.produceLatency;
|
|
726
763
|
exports.resetMetrics = __webpack_exports__.resetMetrics;
|
|
764
|
+
exports.setMockKafkaForTestMode = __webpack_exports__.setMockKafkaForTestMode;
|
|
727
765
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
728
766
|
"Kafka",
|
|
729
767
|
"WooviConsumer",
|
|
@@ -735,12 +773,15 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
735
773
|
"createKafka",
|
|
736
774
|
"createKafkaFromEnv",
|
|
737
775
|
"createProducer",
|
|
776
|
+
"disableTestMode",
|
|
738
777
|
"enableDefaultMetrics",
|
|
778
|
+
"enableTestMode",
|
|
739
779
|
"getKafka",
|
|
740
780
|
"getMessageHeaders",
|
|
741
781
|
"getMetrics",
|
|
742
782
|
"getMetricsContentType",
|
|
743
783
|
"healthCheck",
|
|
784
|
+
"isTestMode",
|
|
744
785
|
"kafkaRegistry",
|
|
745
786
|
"lastMessageTimestamp",
|
|
746
787
|
"logLevel",
|
|
@@ -751,7 +792,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
751
792
|
"onShutdown",
|
|
752
793
|
"parseMessage",
|
|
753
794
|
"produceLatency",
|
|
754
|
-
"resetMetrics"
|
|
795
|
+
"resetMetrics",
|
|
796
|
+
"setMockKafkaForTestMode"
|
|
755
797
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
756
798
|
Object.defineProperty(exports, '__esModule', {
|
|
757
799
|
value: true
|
package/dist/index.d.ts
CHANGED
|
@@ -34,12 +34,23 @@ export declare function createKafkaFromEnv(clientId: string): Kafka;
|
|
|
34
34
|
|
|
35
35
|
export declare function createProducer(config?: WooviProducerConfig): WooviProducer;
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Disable test mode and reset the Kafka instance.
|
|
39
|
+
*/
|
|
40
|
+
export declare function disableTestMode(): void;
|
|
41
|
+
|
|
37
42
|
export { EachBatchPayload }
|
|
38
43
|
|
|
39
44
|
export { EachMessagePayload }
|
|
40
45
|
|
|
41
46
|
export declare function enableDefaultMetrics(): void;
|
|
42
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Enable test mode with a mock Kafka instance.
|
|
50
|
+
* This allows tests to bypass the real Kafka connection.
|
|
51
|
+
*/
|
|
52
|
+
export declare function enableTestMode(mockKafka?: Kafka): void;
|
|
53
|
+
|
|
43
54
|
export declare interface ErrorHandler {
|
|
44
55
|
(error: Error, payload: EachMessagePayload): Promise<void>;
|
|
45
56
|
}
|
|
@@ -57,6 +68,11 @@ export declare function healthCheck(): Promise<{
|
|
|
57
68
|
error?: string;
|
|
58
69
|
}>;
|
|
59
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Check if test mode is enabled.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isTestMode(): boolean;
|
|
75
|
+
|
|
60
76
|
export { Kafka }
|
|
61
77
|
|
|
62
78
|
export declare interface KafkaConfig {
|
|
@@ -132,6 +148,8 @@ export { RecordMetadata }
|
|
|
132
148
|
|
|
133
149
|
export declare function resetMetrics(): void;
|
|
134
150
|
|
|
151
|
+
export declare function setMockKafkaForTestMode(mock: Kafka): void;
|
|
152
|
+
|
|
135
153
|
export declare class WooviConsumer {
|
|
136
154
|
private consumer;
|
|
137
155
|
private topics;
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Kafka, logLevel } from "kafkajs";
|
|
|
2
2
|
import { logger } from "@woovi/logger";
|
|
3
3
|
import { Counter, Gauge, Histogram, Registry, collectDefaultMetrics } from "prom-client";
|
|
4
4
|
let kafkaInstance = null;
|
|
5
|
+
let testMode = false;
|
|
5
6
|
const shutdownCallbacks = [];
|
|
6
7
|
let shutdownRegistered = false;
|
|
7
8
|
const kafkaLogger = logger.child({
|
|
@@ -51,7 +52,25 @@ function registerGracefulShutdown() {
|
|
|
51
52
|
function onShutdown(callback) {
|
|
52
53
|
shutdownCallbacks.push(callback);
|
|
53
54
|
}
|
|
55
|
+
const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
|
|
56
|
+
function getGlobalState() {
|
|
57
|
+
const g = globalThis;
|
|
58
|
+
if (!g[WOOVI_KAFKA_MOCK_KEY]) g[WOOVI_KAFKA_MOCK_KEY] = {
|
|
59
|
+
mock: null,
|
|
60
|
+
testMode: false
|
|
61
|
+
};
|
|
62
|
+
return g[WOOVI_KAFKA_MOCK_KEY];
|
|
63
|
+
}
|
|
64
|
+
function setMockKafkaForTestMode(mock) {
|
|
65
|
+
const state = getGlobalState();
|
|
66
|
+
state.mock = mock;
|
|
67
|
+
state.testMode = true;
|
|
68
|
+
testMode = true;
|
|
69
|
+
}
|
|
54
70
|
function getKafka() {
|
|
71
|
+
const state = getGlobalState();
|
|
72
|
+
if (state.testMode && state.mock) return state.mock;
|
|
73
|
+
if (testMode && kafkaInstance) return kafkaInstance;
|
|
55
74
|
if (!kafkaInstance) throw new Error('Kafka not initialized. Call createKafka() first.');
|
|
56
75
|
return kafkaInstance;
|
|
57
76
|
}
|
|
@@ -111,6 +130,17 @@ async function healthCheck() {
|
|
|
111
130
|
};
|
|
112
131
|
}
|
|
113
132
|
}
|
|
133
|
+
function enableTestMode(mockKafka) {
|
|
134
|
+
testMode = true;
|
|
135
|
+
if (mockKafka) kafkaInstance = mockKafka;
|
|
136
|
+
}
|
|
137
|
+
function disableTestMode() {
|
|
138
|
+
testMode = false;
|
|
139
|
+
kafkaInstance = null;
|
|
140
|
+
}
|
|
141
|
+
function isTestMode() {
|
|
142
|
+
return testMode;
|
|
143
|
+
}
|
|
114
144
|
const kafkaRegistry = new Registry();
|
|
115
145
|
const messageProcessingDuration = new Histogram({
|
|
116
146
|
name: 'kafka_consumer_message_processing_duration_seconds',
|
|
@@ -643,4 +673,4 @@ function getMessageHeaders(payload) {
|
|
|
643
673
|
}
|
|
644
674
|
return headers;
|
|
645
675
|
}
|
|
646
|
-
export { Kafka, WooviConsumer, WooviProducer, batchProcessingDuration, batchSize, consumerLag, createConsumer, createKafka, createKafkaFromEnv, createProducer, enableDefaultMetrics, getKafka, getMessageHeaders, getMetrics, getMetricsContentType, healthCheck, kafkaRegistry, lastMessageTimestamp, logLevel, messageProcessingDuration, messagesFailedTotal, messagesProcessedTotal, messagesProducedTotal, onShutdown, parseMessage, produceLatency, resetMetrics };
|
|
676
|
+
export { Kafka, WooviConsumer, WooviProducer, batchProcessingDuration, batchSize, consumerLag, createConsumer, createKafka, createKafkaFromEnv, createProducer, disableTestMode, enableDefaultMetrics, enableTestMode, getKafka, getMessageHeaders, getMetrics, getMetricsContentType, healthCheck, isTestMode, kafkaRegistry, lastMessageTimestamp, logLevel, messageProcessingDuration, messagesFailedTotal, messagesProcessedTotal, messagesProducedTotal, onShutdown, parseMessage, produceLatency, resetMetrics, setMockKafkaForTestMode };
|
package/dist/test-utils.cjs
CHANGED
|
@@ -29,13 +29,15 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
mockAdmin: ()=>mockAdmin,
|
|
30
30
|
KafkaJSProtocolError: ()=>KafkaJSProtocolError,
|
|
31
31
|
clearAllMocks: ()=>clearAllMocks,
|
|
32
|
+
createMockKafka: ()=>createMockKafka,
|
|
32
33
|
mockConsumer: ()=>mockConsumer,
|
|
33
|
-
mockProducerSend: ()=>mockProducerSend,
|
|
34
34
|
kafkaAssert: ()=>kafkaAssert,
|
|
35
35
|
Kafka: ()=>Kafka,
|
|
36
36
|
kafkaAssertLength: ()=>kafkaAssertLength,
|
|
37
|
+
mockProducerSend: ()=>mockProducerSend,
|
|
37
38
|
mockTransaction: ()=>mockTransaction,
|
|
38
39
|
mockTransactionSend: ()=>mockTransactionSend,
|
|
40
|
+
setupKafkaTest: ()=>setupKafkaTest,
|
|
39
41
|
KafkaJSNonRetriableError: ()=>KafkaJSNonRetriableError,
|
|
40
42
|
CompressionTypes: ()=>CompressionTypes,
|
|
41
43
|
mockProducer: ()=>mockProducer
|
|
@@ -77,34 +79,34 @@ const kafkaMock_fn = getMockFn();
|
|
|
77
79
|
const mockProducerSend = kafkaMock_fn();
|
|
78
80
|
const mockTransactionSend = kafkaMock_fn();
|
|
79
81
|
const mockTransaction = kafkaMock_fn().mockReturnValue({
|
|
80
|
-
send: mockTransactionSend,
|
|
81
|
-
commit: kafkaMock_fn(),
|
|
82
|
-
abort: kafkaMock_fn()
|
|
82
|
+
send: mockTransactionSend.mockResolvedValue(void 0),
|
|
83
|
+
commit: kafkaMock_fn().mockResolvedValue(void 0),
|
|
84
|
+
abort: kafkaMock_fn().mockResolvedValue(void 0)
|
|
83
85
|
});
|
|
84
86
|
const mockProducer = kafkaMock_fn().mockReturnValue({
|
|
85
|
-
connect: kafkaMock_fn(),
|
|
86
|
-
disconnect: kafkaMock_fn(),
|
|
87
|
-
send: mockProducerSend,
|
|
87
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
88
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
89
|
+
send: mockProducerSend.mockResolvedValue(void 0),
|
|
88
90
|
transaction: mockTransaction,
|
|
89
91
|
on: kafkaMock_fn()
|
|
90
92
|
});
|
|
91
93
|
const mockConsumer = kafkaMock_fn().mockReturnValue({
|
|
92
|
-
connect: kafkaMock_fn(),
|
|
93
|
-
disconnect: kafkaMock_fn(),
|
|
94
|
-
subscribe: kafkaMock_fn(),
|
|
95
|
-
run: kafkaMock_fn(),
|
|
94
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
95
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
96
|
+
subscribe: kafkaMock_fn().mockResolvedValue(void 0),
|
|
97
|
+
run: kafkaMock_fn().mockResolvedValue(void 0),
|
|
96
98
|
on: kafkaMock_fn(),
|
|
97
|
-
pause: kafkaMock_fn(),
|
|
98
|
-
resume: kafkaMock_fn(),
|
|
99
|
-
seek: kafkaMock_fn()
|
|
99
|
+
pause: kafkaMock_fn().mockResolvedValue(void 0),
|
|
100
|
+
resume: kafkaMock_fn().mockResolvedValue(void 0),
|
|
101
|
+
seek: kafkaMock_fn().mockResolvedValue(void 0)
|
|
100
102
|
});
|
|
101
103
|
const mockAdmin = kafkaMock_fn().mockReturnValue({
|
|
102
|
-
connect: kafkaMock_fn(),
|
|
103
|
-
disconnect: kafkaMock_fn(),
|
|
104
|
-
createTopics: kafkaMock_fn(),
|
|
105
|
-
deleteTopics: kafkaMock_fn(),
|
|
106
|
-
listTopics: kafkaMock_fn().
|
|
107
|
-
fetchTopicMetadata: kafkaMock_fn()
|
|
104
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
105
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
106
|
+
createTopics: kafkaMock_fn().mockResolvedValue(void 0),
|
|
107
|
+
deleteTopics: kafkaMock_fn().mockResolvedValue(void 0),
|
|
108
|
+
listTopics: kafkaMock_fn().mockResolvedValue([]),
|
|
109
|
+
fetchTopicMetadata: kafkaMock_fn().mockResolvedValue(void 0)
|
|
108
110
|
});
|
|
109
111
|
const Kafka = kafkaMock_fn().mockReturnValue({
|
|
110
112
|
producer: mockProducer,
|
|
@@ -202,11 +204,28 @@ const kafkaAssertLength = (args)=>{
|
|
|
202
204
|
throw error;
|
|
203
205
|
}
|
|
204
206
|
};
|
|
207
|
+
function createMockKafka() {
|
|
208
|
+
return Kafka();
|
|
209
|
+
}
|
|
210
|
+
const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
|
|
211
|
+
function setupKafkaTest() {
|
|
212
|
+
const mockKafkaInstance = {
|
|
213
|
+
producer: mockProducer,
|
|
214
|
+
consumer: mockConsumer,
|
|
215
|
+
admin: mockAdmin
|
|
216
|
+
};
|
|
217
|
+
const g = globalThis;
|
|
218
|
+
g[WOOVI_KAFKA_MOCK_KEY] = {
|
|
219
|
+
mock: mockKafkaInstance,
|
|
220
|
+
testMode: true
|
|
221
|
+
};
|
|
222
|
+
}
|
|
205
223
|
exports.CompressionTypes = __webpack_exports__.CompressionTypes;
|
|
206
224
|
exports.Kafka = __webpack_exports__.Kafka;
|
|
207
225
|
exports.KafkaJSNonRetriableError = __webpack_exports__.KafkaJSNonRetriableError;
|
|
208
226
|
exports.KafkaJSProtocolError = __webpack_exports__.KafkaJSProtocolError;
|
|
209
227
|
exports.clearAllMocks = __webpack_exports__.clearAllMocks;
|
|
228
|
+
exports.createMockKafka = __webpack_exports__.createMockKafka;
|
|
210
229
|
exports.getKafkaMessages = __webpack_exports__.getKafkaMessages;
|
|
211
230
|
exports.kafkaAssert = __webpack_exports__.kafkaAssert;
|
|
212
231
|
exports.kafkaAssertLength = __webpack_exports__.kafkaAssertLength;
|
|
@@ -217,12 +236,14 @@ exports.mockProducer = __webpack_exports__.mockProducer;
|
|
|
217
236
|
exports.mockProducerSend = __webpack_exports__.mockProducerSend;
|
|
218
237
|
exports.mockTransaction = __webpack_exports__.mockTransaction;
|
|
219
238
|
exports.mockTransactionSend = __webpack_exports__.mockTransactionSend;
|
|
239
|
+
exports.setupKafkaTest = __webpack_exports__.setupKafkaTest;
|
|
220
240
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
221
241
|
"CompressionTypes",
|
|
222
242
|
"Kafka",
|
|
223
243
|
"KafkaJSNonRetriableError",
|
|
224
244
|
"KafkaJSProtocolError",
|
|
225
245
|
"clearAllMocks",
|
|
246
|
+
"createMockKafka",
|
|
226
247
|
"getKafkaMessages",
|
|
227
248
|
"kafkaAssert",
|
|
228
249
|
"kafkaAssertLength",
|
|
@@ -232,7 +253,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
232
253
|
"mockProducer",
|
|
233
254
|
"mockProducerSend",
|
|
234
255
|
"mockTransaction",
|
|
235
|
-
"mockTransactionSend"
|
|
256
|
+
"mockTransactionSend",
|
|
257
|
+
"setupKafkaTest"
|
|
236
258
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
237
259
|
Object.defineProperty(exports, '__esModule', {
|
|
238
260
|
value: true
|
package/dist/test-utils.d.ts
CHANGED
|
@@ -8,6 +8,20 @@ export declare const CompressionTypes: {
|
|
|
8
8
|
ZSTD: number;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Create a mock Kafka instance for testing.
|
|
13
|
+
* Use this with setMockKafkaForTestMode from @woovi/kafka.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { setMockKafkaForTestMode } from '@woovi/kafka';
|
|
17
|
+
* import { createMockKafka } from '@woovi/kafka/test-utils';
|
|
18
|
+
*
|
|
19
|
+
* beforeAll(() => {
|
|
20
|
+
* setMockKafkaForTestMode(createMockKafka());
|
|
21
|
+
* });
|
|
22
|
+
*/
|
|
23
|
+
export declare function createMockKafka(): any;
|
|
24
|
+
|
|
11
25
|
export declare const getKafkaMessages: () => KafkaMessage[];
|
|
12
26
|
|
|
13
27
|
export declare const Kafka: MockFn;
|
|
@@ -76,4 +90,21 @@ export declare const mockTransaction: MockFn;
|
|
|
76
90
|
|
|
77
91
|
export declare const mockTransactionSend: MockFn;
|
|
78
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Set up Kafka for testing with a mock instance.
|
|
95
|
+
* This creates a mock Kafka that records messages for kafkaAssert.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* import { setupKafkaTest, clearAllMocks } from '@woovi/kafka/test-utils';
|
|
99
|
+
*
|
|
100
|
+
* beforeAll(() => {
|
|
101
|
+
* setupKafkaTest();
|
|
102
|
+
* });
|
|
103
|
+
*
|
|
104
|
+
* beforeEach(() => {
|
|
105
|
+
* clearAllMocks();
|
|
106
|
+
* });
|
|
107
|
+
*/
|
|
108
|
+
export declare function setupKafkaTest(): void;
|
|
109
|
+
|
|
79
110
|
export { }
|
package/dist/test-utils.js
CHANGED
|
@@ -35,34 +35,34 @@ const kafkaMock_fn = getMockFn();
|
|
|
35
35
|
const mockProducerSend = kafkaMock_fn();
|
|
36
36
|
const mockTransactionSend = kafkaMock_fn();
|
|
37
37
|
const mockTransaction = kafkaMock_fn().mockReturnValue({
|
|
38
|
-
send: mockTransactionSend,
|
|
39
|
-
commit: kafkaMock_fn(),
|
|
40
|
-
abort: kafkaMock_fn()
|
|
38
|
+
send: mockTransactionSend.mockResolvedValue(void 0),
|
|
39
|
+
commit: kafkaMock_fn().mockResolvedValue(void 0),
|
|
40
|
+
abort: kafkaMock_fn().mockResolvedValue(void 0)
|
|
41
41
|
});
|
|
42
42
|
const mockProducer = kafkaMock_fn().mockReturnValue({
|
|
43
|
-
connect: kafkaMock_fn(),
|
|
44
|
-
disconnect: kafkaMock_fn(),
|
|
45
|
-
send: mockProducerSend,
|
|
43
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
44
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
45
|
+
send: mockProducerSend.mockResolvedValue(void 0),
|
|
46
46
|
transaction: mockTransaction,
|
|
47
47
|
on: kafkaMock_fn()
|
|
48
48
|
});
|
|
49
49
|
const mockConsumer = kafkaMock_fn().mockReturnValue({
|
|
50
|
-
connect: kafkaMock_fn(),
|
|
51
|
-
disconnect: kafkaMock_fn(),
|
|
52
|
-
subscribe: kafkaMock_fn(),
|
|
53
|
-
run: kafkaMock_fn(),
|
|
50
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
51
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
52
|
+
subscribe: kafkaMock_fn().mockResolvedValue(void 0),
|
|
53
|
+
run: kafkaMock_fn().mockResolvedValue(void 0),
|
|
54
54
|
on: kafkaMock_fn(),
|
|
55
|
-
pause: kafkaMock_fn(),
|
|
56
|
-
resume: kafkaMock_fn(),
|
|
57
|
-
seek: kafkaMock_fn()
|
|
55
|
+
pause: kafkaMock_fn().mockResolvedValue(void 0),
|
|
56
|
+
resume: kafkaMock_fn().mockResolvedValue(void 0),
|
|
57
|
+
seek: kafkaMock_fn().mockResolvedValue(void 0)
|
|
58
58
|
});
|
|
59
59
|
const mockAdmin = kafkaMock_fn().mockReturnValue({
|
|
60
|
-
connect: kafkaMock_fn(),
|
|
61
|
-
disconnect: kafkaMock_fn(),
|
|
62
|
-
createTopics: kafkaMock_fn(),
|
|
63
|
-
deleteTopics: kafkaMock_fn(),
|
|
64
|
-
listTopics: kafkaMock_fn().
|
|
65
|
-
fetchTopicMetadata: kafkaMock_fn()
|
|
60
|
+
connect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
61
|
+
disconnect: kafkaMock_fn().mockResolvedValue(void 0),
|
|
62
|
+
createTopics: kafkaMock_fn().mockResolvedValue(void 0),
|
|
63
|
+
deleteTopics: kafkaMock_fn().mockResolvedValue(void 0),
|
|
64
|
+
listTopics: kafkaMock_fn().mockResolvedValue([]),
|
|
65
|
+
fetchTopicMetadata: kafkaMock_fn().mockResolvedValue(void 0)
|
|
66
66
|
});
|
|
67
67
|
const Kafka = kafkaMock_fn().mockReturnValue({
|
|
68
68
|
producer: mockProducer,
|
|
@@ -160,4 +160,20 @@ const kafkaAssertLength = (args)=>{
|
|
|
160
160
|
throw error;
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
|
-
|
|
163
|
+
function createMockKafka() {
|
|
164
|
+
return Kafka();
|
|
165
|
+
}
|
|
166
|
+
const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
|
|
167
|
+
function setupKafkaTest() {
|
|
168
|
+
const mockKafkaInstance = {
|
|
169
|
+
producer: mockProducer,
|
|
170
|
+
consumer: mockConsumer,
|
|
171
|
+
admin: mockAdmin
|
|
172
|
+
};
|
|
173
|
+
const g = globalThis;
|
|
174
|
+
g[WOOVI_KAFKA_MOCK_KEY] = {
|
|
175
|
+
mock: mockKafkaInstance,
|
|
176
|
+
testMode: true
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
export { CompressionTypes, Kafka, KafkaJSNonRetriableError, KafkaJSProtocolError, clearAllMocks, createMockKafka, getKafkaMessages, kafkaAssert, kafkaAssertLength, logLevel, mockAdmin, mockConsumer, mockProducer, mockProducerSend, mockTransaction, mockTransactionSend, setupKafkaTest };
|