@makebelieve21213-packages/rabbitmq-client 1.0.0

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.
Files changed (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +461 -0
  3. package/dist/__tests__/__mocks__/logger.d.ts +10 -0
  4. package/dist/__tests__/__mocks__/logger.d.ts.map +1 -0
  5. package/dist/__tests__/__mocks__/logger.js +11 -0
  6. package/dist/__tests__/__mocks__/logger.js.map +1 -0
  7. package/dist/__tests__/__mocks__/redis-client.d.ts +9 -0
  8. package/dist/__tests__/__mocks__/redis-client.d.ts.map +1 -0
  9. package/dist/__tests__/__mocks__/redis-client.js +10 -0
  10. package/dist/__tests__/__mocks__/redis-client.js.map +1 -0
  11. package/dist/__tests__/connect-rabbitmq-receiver.spec.d.ts +2 -0
  12. package/dist/__tests__/connect-rabbitmq-receiver.spec.d.ts.map +1 -0
  13. package/dist/__tests__/connect-rabbitmq-receiver.spec.js +206 -0
  14. package/dist/__tests__/connect-rabbitmq-receiver.spec.js.map +1 -0
  15. package/dist/__tests__/connect-rabbitmq-receivers.spec.d.ts +2 -0
  16. package/dist/__tests__/connect-rabbitmq-receivers.spec.d.ts.map +1 -0
  17. package/dist/__tests__/connect-rabbitmq-receivers.spec.js +139 -0
  18. package/dist/__tests__/connect-rabbitmq-receivers.spec.js.map +1 -0
  19. package/dist/__tests__/index.spec.d.ts +2 -0
  20. package/dist/__tests__/index.spec.d.ts.map +1 -0
  21. package/dist/__tests__/index.spec.js +206 -0
  22. package/dist/__tests__/index.spec.js.map +1 -0
  23. package/dist/__tests__/setup.d.ts +2 -0
  24. package/dist/__tests__/setup.d.ts.map +1 -0
  25. package/dist/__tests__/setup.js +15 -0
  26. package/dist/__tests__/setup.js.map +1 -0
  27. package/dist/__tests__/test-types.d.ts +52 -0
  28. package/dist/__tests__/test-types.d.ts.map +1 -0
  29. package/dist/__tests__/test-types.js +2 -0
  30. package/dist/__tests__/test-types.js.map +1 -0
  31. package/dist/config/__tests__/factories.spec.d.ts +2 -0
  32. package/dist/config/__tests__/factories.spec.d.ts.map +1 -0
  33. package/dist/config/__tests__/factories.spec.js +168 -0
  34. package/dist/config/__tests__/factories.spec.js.map +1 -0
  35. package/dist/config/factories.d.ts +23 -0
  36. package/dist/config/factories.d.ts.map +1 -0
  37. package/dist/config/factories.js +123 -0
  38. package/dist/config/factories.js.map +1 -0
  39. package/dist/connect-rabbitmq-receiver.d.ts +8 -0
  40. package/dist/connect-rabbitmq-receiver.d.ts.map +1 -0
  41. package/dist/connect-rabbitmq-receiver.js +49 -0
  42. package/dist/connect-rabbitmq-receiver.js.map +1 -0
  43. package/dist/connect-rabbitmq-receivers.d.ts +8 -0
  44. package/dist/connect-rabbitmq-receivers.d.ts.map +1 -0
  45. package/dist/connect-rabbitmq-receivers.js +18 -0
  46. package/dist/connect-rabbitmq-receivers.js.map +1 -0
  47. package/dist/index.d.ts +14 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +8 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.d.ts +2 -0
  52. package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.d.ts.map +1 -0
  53. package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.js +647 -0
  54. package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.js.map +1 -0
  55. package/dist/interceptors/rabbitmq.interceptor.d.ts +18 -0
  56. package/dist/interceptors/rabbitmq.interceptor.d.ts.map +1 -0
  57. package/dist/interceptors/rabbitmq.interceptor.js +107 -0
  58. package/dist/interceptors/rabbitmq.interceptor.js.map +1 -0
  59. package/dist/main/__tests__/rabbitmq.module.spec.d.ts +2 -0
  60. package/dist/main/__tests__/rabbitmq.module.spec.d.ts.map +1 -0
  61. package/dist/main/__tests__/rabbitmq.module.spec.js +266 -0
  62. package/dist/main/__tests__/rabbitmq.module.spec.js.map +1 -0
  63. package/dist/main/__tests__/rabbitmq.service.spec.d.ts +2 -0
  64. package/dist/main/__tests__/rabbitmq.service.spec.d.ts.map +1 -0
  65. package/dist/main/__tests__/rabbitmq.service.spec.js +349 -0
  66. package/dist/main/__tests__/rabbitmq.service.spec.js.map +1 -0
  67. package/dist/main/rabbitmq.module.d.ts +10 -0
  68. package/dist/main/rabbitmq.module.d.ts.map +1 -0
  69. package/dist/main/rabbitmq.module.js +51 -0
  70. package/dist/main/rabbitmq.module.js.map +1 -0
  71. package/dist/main/rabbitmq.service.d.ts +26 -0
  72. package/dist/main/rabbitmq.service.d.ts.map +1 -0
  73. package/dist/main/rabbitmq.service.js +100 -0
  74. package/dist/main/rabbitmq.service.js.map +1 -0
  75. package/dist/types/base.config.d.ts +15 -0
  76. package/dist/types/base.config.d.ts.map +1 -0
  77. package/dist/types/base.config.js +2 -0
  78. package/dist/types/base.config.js.map +1 -0
  79. package/dist/types/idempotent-message.d.ts +6 -0
  80. package/dist/types/idempotent-message.d.ts.map +1 -0
  81. package/dist/types/idempotent-message.js +2 -0
  82. package/dist/types/idempotent-message.js.map +1 -0
  83. package/dist/types/message-with-correlation-id.d.ts +10 -0
  84. package/dist/types/message-with-correlation-id.d.ts.map +1 -0
  85. package/dist/types/message-with-correlation-id.js +2 -0
  86. package/dist/types/message-with-correlation-id.js.map +1 -0
  87. package/dist/types/rabbitmq-config-dlx.d.ts +4 -0
  88. package/dist/types/rabbitmq-config-dlx.d.ts.map +1 -0
  89. package/dist/types/rabbitmq-config-dlx.js +2 -0
  90. package/dist/types/rabbitmq-config-dlx.js.map +1 -0
  91. package/dist/types/rabbitmq-config-receiver.d.ts +15 -0
  92. package/dist/types/rabbitmq-config-receiver.d.ts.map +1 -0
  93. package/dist/types/rabbitmq-config-receiver.js +2 -0
  94. package/dist/types/rabbitmq-config-receiver.js.map +1 -0
  95. package/dist/types/rabbitmq-config-retry.d.ts +13 -0
  96. package/dist/types/rabbitmq-config-retry.d.ts.map +1 -0
  97. package/dist/types/rabbitmq-config-retry.js +2 -0
  98. package/dist/types/rabbitmq-config-retry.js.map +1 -0
  99. package/dist/types/rabbitmq-config-sender.d.ts +14 -0
  100. package/dist/types/rabbitmq-config-sender.d.ts.map +1 -0
  101. package/dist/types/rabbitmq-config-sender.js +2 -0
  102. package/dist/types/rabbitmq-config-sender.js.map +1 -0
  103. package/dist/types/rabbitmq-module-options.d.ts +17 -0
  104. package/dist/types/rabbitmq-module-options.d.ts.map +1 -0
  105. package/dist/types/rabbitmq-module-options.js +2 -0
  106. package/dist/types/rabbitmq-module-options.js.map +1 -0
  107. package/dist/types/rabbitmq-receiver-options.d.ts +18 -0
  108. package/dist/types/rabbitmq-receiver-options.d.ts.map +1 -0
  109. package/dist/types/rabbitmq-receiver-options.js +2 -0
  110. package/dist/types/rabbitmq-receiver-options.js.map +1 -0
  111. package/dist/types/rabbitmq-receiver-subscription.d.ts +19 -0
  112. package/dist/types/rabbitmq-receiver-subscription.d.ts.map +1 -0
  113. package/dist/types/rabbitmq-receiver-subscription.js +2 -0
  114. package/dist/types/rabbitmq-receiver-subscription.js.map +1 -0
  115. package/dist/types/rabbitmq-receivers-config.d.ts +14 -0
  116. package/dist/types/rabbitmq-receivers-config.d.ts.map +1 -0
  117. package/dist/types/rabbitmq-receivers-config.js +2 -0
  118. package/dist/types/rabbitmq-receivers-config.js.map +1 -0
  119. package/dist/types/rabbitmq-sender-options.d.ts +10 -0
  120. package/dist/types/rabbitmq-sender-options.d.ts.map +1 -0
  121. package/dist/types/rabbitmq-sender-options.js +2 -0
  122. package/dist/types/rabbitmq-sender-options.js.map +1 -0
  123. package/dist/types/routing-keys.d.ts +24 -0
  124. package/dist/types/routing-keys.d.ts.map +1 -0
  125. package/dist/types/routing-keys.js +29 -0
  126. package/dist/types/routing-keys.js.map +1 -0
  127. package/dist/utils/__tests__/injections.spec.d.ts +2 -0
  128. package/dist/utils/__tests__/injections.spec.d.ts.map +1 -0
  129. package/dist/utils/__tests__/injections.spec.js +174 -0
  130. package/dist/utils/__tests__/injections.spec.js.map +1 -0
  131. package/dist/utils/injections.d.ts +2 -0
  132. package/dist/utils/injections.d.ts.map +1 -0
  133. package/dist/utils/injections.js +2 -0
  134. package/dist/utils/injections.js.map +1 -0
  135. package/package.json +91 -0
@@ -0,0 +1,206 @@
1
+ import { LoggerService } from "@makebelieve21213-packages/logger";
2
+ import { RedisClientService } from "@makebelieve21213-packages/redis-client";
3
+ import { createDLXConfig, createReceiverConfig, createRetryConfig } from "../config/factories.js";
4
+ import connectRabbitMQReceiver from "../connect-rabbitmq-receiver.js";
5
+ import RabbitMQIdempotencyInterceptor from "../interceptors/rabbitmq.interceptor.js";
6
+ jest.mock("src/config/factories");
7
+ jest.mock("src/interceptors/rabbitmq.interceptor");
8
+ jest.mock("@makebelieve21213-packages/logger");
9
+ jest.mock("@makebelieve21213-packages/redis-client");
10
+ const mockCreateReceiverConfig = createReceiverConfig;
11
+ const mockCreateRetryConfig = createRetryConfig;
12
+ const mockCreateDLXConfig = createDLXConfig;
13
+ const mockRabbitMQIdempotencyInterceptor = RabbitMQIdempotencyInterceptor;
14
+ describe("connectRabbitMQReceiver", () => {
15
+ let app;
16
+ let loggerService;
17
+ let redisService;
18
+ let receiverOptions;
19
+ const mockReceiverConfig = {
20
+ transport: {},
21
+ options: {
22
+ urls: ["amqp://localhost:5672"],
23
+ queue: "test.queue",
24
+ queueOptions: {
25
+ durable: true,
26
+ arguments: {
27
+ "x-dead-letter-exchange": "test_exchange.retry",
28
+ "x-dead-letter-routing-key": "test.*",
29
+ },
30
+ },
31
+ exchange: "test_exchange",
32
+ exchangeType: "topic",
33
+ wildcards: true,
34
+ pattern: "test.*",
35
+ prefetchCount: 10,
36
+ noAck: false,
37
+ },
38
+ };
39
+ const mockRetryConfig = {
40
+ transport: {},
41
+ options: {
42
+ urls: ["amqp://localhost:5672"],
43
+ queue: "test.queue.retry",
44
+ queueOptions: {
45
+ durable: true,
46
+ arguments: {
47
+ "x-dead-letter-exchange": "test_exchange",
48
+ "x-dead-letter-routing-key": "test.*",
49
+ "x-message-ttl": 5000,
50
+ },
51
+ },
52
+ exchange: "test_exchange.retry",
53
+ exchangeType: "topic",
54
+ wildcards: true,
55
+ },
56
+ };
57
+ const mockDLXConfig = {
58
+ transport: {},
59
+ options: {
60
+ urls: ["amqp://localhost:5672"],
61
+ queue: "global.dlx",
62
+ queueOptions: {
63
+ durable: true,
64
+ },
65
+ exchange: "events_exchange.dlx",
66
+ exchangeType: "topic",
67
+ wildcards: true,
68
+ },
69
+ };
70
+ beforeEach(() => {
71
+ jest.clearAllMocks();
72
+ receiverOptions = {
73
+ url: "amqp://localhost:5672",
74
+ exchange: "test_exchange",
75
+ exchangeType: "topic",
76
+ queue: "test.queue",
77
+ pattern: "test.*",
78
+ prefetchCount: 10,
79
+ noAck: false,
80
+ };
81
+ loggerService = {
82
+ log: jest.fn(),
83
+ error: jest.fn(),
84
+ warn: jest.fn(),
85
+ debug: jest.fn(),
86
+ setContext: jest.fn(),
87
+ info: jest.fn(),
88
+ };
89
+ redisService = {};
90
+ app = {
91
+ resolve: jest.fn(),
92
+ connectMicroservice: jest.fn(),
93
+ useGlobalInterceptors: jest.fn(),
94
+ getMicroservices: jest.fn().mockReturnValue([]),
95
+ };
96
+ app.resolve.mockImplementation(async (token) => {
97
+ if (token === LoggerService) {
98
+ return loggerService;
99
+ }
100
+ if (token === RedisClientService) {
101
+ return redisService;
102
+ }
103
+ return undefined;
104
+ });
105
+ mockCreateReceiverConfig.mockReturnValue(mockReceiverConfig);
106
+ mockCreateRetryConfig.mockReturnValue(mockRetryConfig);
107
+ mockCreateDLXConfig.mockReturnValue(mockDLXConfig);
108
+ mockRabbitMQIdempotencyInterceptor.mockImplementation(() => ({}));
109
+ });
110
+ describe("базовая функциональность", () => {
111
+ it("должен создать конфигурации для receiver, retry и DLX", async () => {
112
+ await connectRabbitMQReceiver(app, receiverOptions);
113
+ expect(mockCreateReceiverConfig).toHaveBeenCalledWith(receiverOptions);
114
+ expect(mockCreateRetryConfig).toHaveBeenCalledWith(receiverOptions);
115
+ expect(mockCreateDLXConfig).toHaveBeenCalledWith(receiverOptions);
116
+ });
117
+ it("должен подключить receiver микросервис", async () => {
118
+ await connectRabbitMQReceiver(app, receiverOptions);
119
+ expect(app.connectMicroservice).toHaveBeenCalledWith({
120
+ transport: mockReceiverConfig.transport,
121
+ options: mockReceiverConfig.options,
122
+ });
123
+ });
124
+ it("должен подключить retry микросервис", async () => {
125
+ await connectRabbitMQReceiver(app, receiverOptions);
126
+ expect(app.connectMicroservice).toHaveBeenCalledWith({
127
+ transport: mockRetryConfig.transport,
128
+ options: mockRetryConfig.options,
129
+ });
130
+ });
131
+ it("должен залогировать подключение receiver", async () => {
132
+ await connectRabbitMQReceiver(app, receiverOptions);
133
+ expect(loggerService.log).toHaveBeenCalledWith(`RabbitMQ receiver connected [queue: ${receiverOptions.queue}, pattern: ${receiverOptions.pattern}, exchange: ${receiverOptions.exchange}, exchangeType: ${receiverOptions.exchangeType}]`);
134
+ });
135
+ });
136
+ describe("глобальная настройка", () => {
137
+ it("должен установить глобальный интерцептор идемпотентности при skipGlobalSetup = false", async () => {
138
+ await connectRabbitMQReceiver(app, receiverOptions, false);
139
+ expect(mockRabbitMQIdempotencyInterceptor).toHaveBeenCalledWith(redisService, loggerService);
140
+ expect(app.useGlobalInterceptors).toHaveBeenCalledTimes(1);
141
+ expect(app.useGlobalInterceptors).toHaveBeenCalledWith(expect.objectContaining({}));
142
+ });
143
+ it("не должен устанавливать глобальные интерцепторы при skipGlobalSetup = true", async () => {
144
+ await connectRabbitMQReceiver(app, receiverOptions, true);
145
+ expect(app.useGlobalInterceptors).not.toHaveBeenCalled();
146
+ });
147
+ it("не должен подключать DLX микросервис при skipGlobalSetup = true", async () => {
148
+ await connectRabbitMQReceiver(app, receiverOptions, true);
149
+ const dlxCalls = app.connectMicroservice.mock.calls.filter((call) => call[0].options.queue === mockDLXConfig.options.queue);
150
+ expect(dlxCalls).toHaveLength(0);
151
+ });
152
+ });
153
+ describe("DLX очередь", () => {
154
+ it("должен подключить DLX микросервис при skipGlobalSetup = false", async () => {
155
+ await connectRabbitMQReceiver(app, receiverOptions, false);
156
+ const dlxCalls = app.connectMicroservice.mock.calls.filter((call) => call[0].options.queue === mockDLXConfig.options.queue);
157
+ expect(dlxCalls).toHaveLength(1);
158
+ expect(dlxCalls[0][0]).toEqual({
159
+ transport: mockDLXConfig.transport,
160
+ options: mockDLXConfig.options,
161
+ });
162
+ });
163
+ it("не должен подключать DLX микросервис если он уже подключен", async () => {
164
+ const existingMicroservice = {
165
+ options: {
166
+ queue: mockDLXConfig.options.queue,
167
+ },
168
+ };
169
+ app.getMicroservices.mockReturnValue([existingMicroservice]);
170
+ await connectRabbitMQReceiver(app, receiverOptions, false);
171
+ const dlxCalls = app.connectMicroservice.mock.calls.filter((call) => call[0].options.queue === mockDLXConfig.options.queue);
172
+ expect(dlxCalls).toHaveLength(0);
173
+ });
174
+ it("должен проверить существующие микросервисы перед подключением DLX", async () => {
175
+ await connectRabbitMQReceiver(app, receiverOptions, false);
176
+ expect(app.getMicroservices).toHaveBeenCalled();
177
+ });
178
+ });
179
+ describe("разрешение зависимостей", () => {
180
+ it("должен разрешить LoggerService из приложения", async () => {
181
+ await connectRabbitMQReceiver(app, receiverOptions);
182
+ expect(app.resolve).toHaveBeenCalledWith(LoggerService);
183
+ });
184
+ it("должен разрешить RedisService из приложения", async () => {
185
+ await connectRabbitMQReceiver(app, receiverOptions);
186
+ expect(app.resolve).toHaveBeenCalledWith(RedisClientService);
187
+ });
188
+ });
189
+ describe("порядок вызовов", () => {
190
+ it("должен установить глобальный интерцептор перед подключением микросервисов", async () => {
191
+ await connectRabbitMQReceiver(app, receiverOptions, false);
192
+ const useGlobalInterceptorsCallOrder = app.useGlobalInterceptors.mock
193
+ .invocationCallOrder[0];
194
+ const connectMicroserviceCallOrder = app.connectMicroservice.mock
195
+ .invocationCallOrder[0];
196
+ expect(useGlobalInterceptorsCallOrder).toBeLessThan(connectMicroserviceCallOrder);
197
+ });
198
+ it("должен подключить receiver перед retry", async () => {
199
+ await connectRabbitMQReceiver(app, receiverOptions);
200
+ const receiverCallOrder = app.connectMicroservice.mock.calls.findIndex((call) => call[0].options.queue === mockReceiverConfig.options.queue);
201
+ const retryCallOrder = app.connectMicroservice.mock.calls.findIndex((call) => call[0].options.queue === mockRetryConfig.options.queue);
202
+ expect(receiverCallOrder).toBeLessThan(retryCallOrder);
203
+ });
204
+ });
205
+ });
206
+ //# sourceMappingURL=connect-rabbitmq-receiver.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-rabbitmq-receiver.spec.js","sourceRoot":"","sources":["../../src/__tests__/connect-rabbitmq-receiver.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connect-rabbitmq-receivers.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-rabbitmq-receivers.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/connect-rabbitmq-receivers.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ import { LoggerService } from "@makebelieve21213-packages/logger";
2
+ import connectRabbitMQReceiver from "../connect-rabbitmq-receiver.js";
3
+ import connectRabbitMQReceivers from "../connect-rabbitmq-receivers.js";
4
+ jest.mock("src/connect-rabbitmq-receiver");
5
+ jest.mock("@makebelieve21213-packages/logger");
6
+ const mockConnectRabbitMQReceiver = connectRabbitMQReceiver;
7
+ describe("connectRabbitMQReceivers", () => {
8
+ let app;
9
+ let loggerService;
10
+ let receiverOptionsList;
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ loggerService = {
14
+ log: jest.fn(),
15
+ error: jest.fn(),
16
+ warn: jest.fn(),
17
+ debug: jest.fn(),
18
+ setContext: jest.fn(),
19
+ info: jest.fn(),
20
+ };
21
+ app = {
22
+ resolve: jest.fn().mockResolvedValue(loggerService),
23
+ };
24
+ receiverOptionsList = [
25
+ {
26
+ url: "amqp://localhost:5672",
27
+ exchange: "test_exchange",
28
+ exchangeType: "topic",
29
+ queue: "test.queue1",
30
+ pattern: "test.*",
31
+ },
32
+ {
33
+ url: "amqp://localhost:5672",
34
+ exchange: "test_exchange",
35
+ exchangeType: "topic",
36
+ queue: "test.queue2",
37
+ pattern: "test.*",
38
+ },
39
+ {
40
+ url: "amqp://localhost:5672",
41
+ exchange: "test_exchange",
42
+ exchangeType: "topic",
43
+ queue: "test.queue3",
44
+ pattern: "test.*",
45
+ },
46
+ ];
47
+ mockConnectRabbitMQReceiver.mockResolvedValue(undefined);
48
+ });
49
+ describe("базовая функциональность", () => {
50
+ it("должен вызвать connectRabbitMQReceiver для каждой подписки", async () => {
51
+ await connectRabbitMQReceivers(app, receiverOptionsList);
52
+ expect(mockConnectRabbitMQReceiver).toHaveBeenCalledTimes(receiverOptionsList.length);
53
+ });
54
+ it("должен передать правильные опции для каждой подписки", async () => {
55
+ await connectRabbitMQReceivers(app, receiverOptionsList);
56
+ receiverOptionsList.forEach((options, index) => {
57
+ expect(mockConnectRabbitMQReceiver).toHaveBeenNthCalledWith(index + 1, app, options, index !== 0);
58
+ });
59
+ });
60
+ it("должен разрешить LoggerService из приложения", async () => {
61
+ await connectRabbitMQReceivers(app, receiverOptionsList);
62
+ expect(app.resolve).toHaveBeenCalledWith(LoggerService);
63
+ });
64
+ it("должен залогировать подключение каждой подписки", async () => {
65
+ await connectRabbitMQReceivers(app, receiverOptionsList);
66
+ receiverOptionsList.forEach((options) => {
67
+ expect(loggerService.log).toHaveBeenCalledWith(`RabbitMQ subscription connected [queue: ${options.queue}, pattern: ${options.pattern}, exchange: ${options.exchange}, exchangeType: ${options.exchangeType}]`);
68
+ });
69
+ });
70
+ it("должен залогировать общее количество подключенных подписок", async () => {
71
+ await connectRabbitMQReceivers(app, receiverOptionsList);
72
+ expect(loggerService.log).toHaveBeenCalledWith(`All RabbitMQ subscriptions connected [count: ${receiverOptionsList.length}]`);
73
+ });
74
+ });
75
+ describe("skipGlobalSetup параметр", () => {
76
+ it("должен передать skipGlobalSetup = false для первой подписки", async () => {
77
+ await connectRabbitMQReceivers(app, receiverOptionsList);
78
+ expect(mockConnectRabbitMQReceiver).toHaveBeenNthCalledWith(1, app, receiverOptionsList[0], false);
79
+ });
80
+ it("должен передать skipGlobalSetup = true для последующих подписок", async () => {
81
+ await connectRabbitMQReceivers(app, receiverOptionsList);
82
+ expect(mockConnectRabbitMQReceiver).toHaveBeenNthCalledWith(2, app, receiverOptionsList[1], true);
83
+ expect(mockConnectRabbitMQReceiver).toHaveBeenNthCalledWith(3, app, receiverOptionsList[2], true);
84
+ });
85
+ });
86
+ describe("порядок вызовов", () => {
87
+ it("должен вызывать connectRabbitMQReceiver последовательно", async () => {
88
+ await connectRabbitMQReceivers(app, receiverOptionsList);
89
+ const callOrder = mockConnectRabbitMQReceiver.mock.invocationCallOrder;
90
+ expect(callOrder[0]).toBeLessThan(callOrder[1]);
91
+ expect(callOrder[1]).toBeLessThan(callOrder[2]);
92
+ });
93
+ it("должен логировать каждую подписку после её подключения", async () => {
94
+ await connectRabbitMQReceivers(app, receiverOptionsList);
95
+ const logCalls = loggerService.log.mock.calls;
96
+ expect(logCalls[0][0]).toContain(receiverOptionsList[0].queue);
97
+ expect(logCalls[1][0]).toContain(receiverOptionsList[1].queue);
98
+ expect(logCalls[2][0]).toContain(receiverOptionsList[2].queue);
99
+ expect(logCalls[3][0]).toContain(`All RabbitMQ subscriptions connected`);
100
+ });
101
+ });
102
+ describe("крайние случаи", () => {
103
+ it("должен корректно обработать пустой массив подписок", async () => {
104
+ await connectRabbitMQReceivers(app, []);
105
+ expect(mockConnectRabbitMQReceiver).not.toHaveBeenCalled();
106
+ expect(loggerService.log).toHaveBeenCalledWith(`All RabbitMQ subscriptions connected [count: 0]`);
107
+ });
108
+ it("должен корректно обработать одну подписку", async () => {
109
+ const singleSubscription = [receiverOptionsList[0]];
110
+ await connectRabbitMQReceivers(app, singleSubscription);
111
+ expect(mockConnectRabbitMQReceiver).toHaveBeenCalledTimes(1);
112
+ expect(mockConnectRabbitMQReceiver).toHaveBeenCalledWith(app, singleSubscription[0], false);
113
+ expect(loggerService.log).toHaveBeenCalledWith(`All RabbitMQ subscriptions connected [count: 1]`);
114
+ });
115
+ it("должен обработать ошибку при подключении подписки", async () => {
116
+ const error = new Error("Connection failed");
117
+ mockConnectRabbitMQReceiver.mockRejectedValueOnce(error);
118
+ await expect(connectRabbitMQReceivers(app, receiverOptionsList)).rejects.toThrow("Connection failed");
119
+ expect(mockConnectRabbitMQReceiver).toHaveBeenCalledTimes(1);
120
+ });
121
+ });
122
+ describe("логирование", () => {
123
+ it("должен логировать правильное количество подписок", async () => {
124
+ await connectRabbitMQReceivers(app, receiverOptionsList);
125
+ const finalLogCall = loggerService.log.mock.calls.find((call) => call[0].includes("All RabbitMQ subscriptions connected"));
126
+ expect(finalLogCall).toBeDefined();
127
+ expect(finalLogCall[0]).toContain(`count: ${receiverOptionsList.length}`);
128
+ });
129
+ it("должен логировать все параметры подписки", async () => {
130
+ const options = receiverOptionsList[0];
131
+ await connectRabbitMQReceivers(app, [options]);
132
+ expect(loggerService.log).toHaveBeenCalledWith(expect.stringContaining(`queue: ${options.queue}`));
133
+ expect(loggerService.log).toHaveBeenCalledWith(expect.stringContaining(`pattern: ${options.pattern}`));
134
+ expect(loggerService.log).toHaveBeenCalledWith(expect.stringContaining(`exchange: ${options.exchange}`));
135
+ expect(loggerService.log).toHaveBeenCalledWith(expect.stringContaining(`exchangeType: ${options.exchangeType}`));
136
+ });
137
+ });
138
+ });
139
+ //# sourceMappingURL=connect-rabbitmq-receivers.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-rabbitmq-receivers.spec.js","sourceRoot":"","sources":["../../src/__tests__/connect-rabbitmq-receivers.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,206 @@
1
+ // Импортируем из главного index.ts файла для покрытия экспортов
2
+ import { createDLXConfig as OriginalCreateDLXConfig, createReceiverConfig as OriginalCreateReceiverConfig, createRetryConfig as OriginalCreateRetryConfig, } from "../config/factories.js";
3
+ import OriginalConnectRabbitMQReceiver from "../connect-rabbitmq-receiver.js";
4
+ import OriginalConnectRabbitMQReceivers from "../connect-rabbitmq-receivers.js";
5
+ import { RabbitMQIdempotencyInterceptor, RabbitMQModule, RabbitMQService, connectRabbitMQReceiver, connectRabbitMQReceivers, createDLXConfig, createReceiverConfig, createRetryConfig, } from "../index.js";
6
+ import OriginalRabbitMQIdempotencyInterceptor from "../interceptors/rabbitmq.interceptor.js";
7
+ import OriginalRabbitMQModule from "../main/rabbitmq.module.js";
8
+ import OriginalRabbitMQService from "../main/rabbitmq.service.js";
9
+ describe("Index экспорты", () => {
10
+ it("должен экспортировать RabbitMQModule", () => {
11
+ expect(RabbitMQModule).toBeDefined();
12
+ expect(typeof RabbitMQModule).toBe("function");
13
+ expect(RabbitMQModule).toBe(OriginalRabbitMQModule);
14
+ });
15
+ it("должен экспортировать RabbitMQService", () => {
16
+ expect(RabbitMQService).toBeDefined();
17
+ expect(typeof RabbitMQService).toBe("function");
18
+ expect(RabbitMQService).toBe(OriginalRabbitMQService);
19
+ });
20
+ it("должен экспортировать connectRabbitMQReceiver", () => {
21
+ expect(connectRabbitMQReceiver).toBeDefined();
22
+ expect(typeof connectRabbitMQReceiver).toBe("function");
23
+ expect(connectRabbitMQReceiver).toBe(OriginalConnectRabbitMQReceiver);
24
+ });
25
+ it("должен экспортировать connectRabbitMQReceivers", () => {
26
+ expect(connectRabbitMQReceivers).toBeDefined();
27
+ expect(typeof connectRabbitMQReceivers).toBe("function");
28
+ expect(connectRabbitMQReceivers).toBe(OriginalConnectRabbitMQReceivers);
29
+ });
30
+ it("должен экспортировать RabbitMQIdempotencyInterceptor", () => {
31
+ expect(RabbitMQIdempotencyInterceptor).toBeDefined();
32
+ expect(typeof RabbitMQIdempotencyInterceptor).toBe("function");
33
+ expect(RabbitMQIdempotencyInterceptor).toBe(OriginalRabbitMQIdempotencyInterceptor);
34
+ });
35
+ it("должен экспортировать createDLXConfig", () => {
36
+ expect(createDLXConfig).toBeDefined();
37
+ expect(typeof createDLXConfig).toBe("function");
38
+ expect(createDLXConfig).toBe(OriginalCreateDLXConfig);
39
+ });
40
+ it("должен экспортировать createReceiverConfig", () => {
41
+ expect(createReceiverConfig).toBeDefined();
42
+ expect(typeof createReceiverConfig).toBe("function");
43
+ expect(createReceiverConfig).toBe(OriginalCreateReceiverConfig);
44
+ });
45
+ it("должен экспортировать createRetryConfig", () => {
46
+ expect(createRetryConfig).toBeDefined();
47
+ expect(typeof createRetryConfig).toBe("function");
48
+ expect(createRetryConfig).toBe(OriginalCreateRetryConfig);
49
+ });
50
+ it("должен экспортировать все основные компоненты пакета", () => {
51
+ // Проверяем, что все основные экспорты доступны
52
+ const exports = {
53
+ RabbitMQModule,
54
+ RabbitMQService,
55
+ connectRabbitMQReceiver,
56
+ connectRabbitMQReceivers,
57
+ RabbitMQIdempotencyInterceptor,
58
+ createDLXConfig,
59
+ createReceiverConfig,
60
+ createRetryConfig,
61
+ };
62
+ expect(Object.keys(exports)).toHaveLength(8);
63
+ Object.values(exports).forEach((exportedItem) => {
64
+ expect(exportedItem).toBeDefined();
65
+ expect(typeof exportedItem).toBe("function");
66
+ });
67
+ });
68
+ it("экспорты должны быть корректными функциями-конструкторами", () => {
69
+ // RabbitMQModule должен быть декорированным классом
70
+ expect(RabbitMQModule).toHaveProperty("name");
71
+ expect(RabbitMQModule.name).toBe("RabbitMQModule");
72
+ // RabbitMQService должен быть классом
73
+ expect(RabbitMQService).toHaveProperty("name");
74
+ expect(RabbitMQService.name).toBe("RabbitMQService");
75
+ // connectRabbitMQReceiver должен быть функцией
76
+ expect(connectRabbitMQReceiver).toHaveProperty("name");
77
+ expect(connectRabbitMQReceiver.name).toBe("connectRabbitMQReceiver");
78
+ // connectRabbitMQReceivers должен быть функцией
79
+ expect(connectRabbitMQReceivers).toHaveProperty("name");
80
+ expect(connectRabbitMQReceivers.name).toBe("connectRabbitMQReceivers");
81
+ // RabbitMQIdempotencyInterceptor должен быть классом
82
+ expect(RabbitMQIdempotencyInterceptor).toHaveProperty("name");
83
+ expect(RabbitMQIdempotencyInterceptor.name).toBe("RabbitMQIdempotencyInterceptor");
84
+ // Функции создания конфигураций должны быть функциями
85
+ expect(createDLXConfig).toHaveProperty("name");
86
+ expect(createDLXConfig.name).toBe("createDLXConfig");
87
+ expect(createReceiverConfig).toHaveProperty("name");
88
+ expect(createReceiverConfig.name).toBe("createReceiverConfig");
89
+ expect(createRetryConfig).toHaveProperty("name");
90
+ expect(createRetryConfig.name).toBe("createRetryConfig");
91
+ });
92
+ it("должен обеспечивать правильную структуру API пакета", () => {
93
+ // Проверяем, что экспорты соответствуют ожидаемому API
94
+ expect(() => {
95
+ // Эти вызовы не должны выбрасывать ошибки на уровне импорта
96
+ const moduleClass = RabbitMQModule;
97
+ const serviceClass = RabbitMQService;
98
+ const connectFunction = connectRabbitMQReceiver;
99
+ const connectReceiversFunction = connectRabbitMQReceivers;
100
+ const interceptorClass = RabbitMQIdempotencyInterceptor;
101
+ const dlxConfigFunction = createDLXConfig;
102
+ const receiverConfigFunction = createReceiverConfig;
103
+ const retryConfigFunction = createRetryConfig;
104
+ expect(moduleClass).toBeTruthy();
105
+ expect(serviceClass).toBeTruthy();
106
+ expect(connectFunction).toBeTruthy();
107
+ expect(connectReceiversFunction).toBeTruthy();
108
+ expect(interceptorClass).toBeTruthy();
109
+ expect(dlxConfigFunction).toBeTruthy();
110
+ expect(receiverConfigFunction).toBeTruthy();
111
+ expect(retryConfigFunction).toBeTruthy();
112
+ }).not.toThrow();
113
+ });
114
+ it("должен экспортировать тип RabbitMQModuleOptions", () => {
115
+ // Проверяем, что тип доступен для использования
116
+ const testOptions = {
117
+ url: "amqp://localhost:5672",
118
+ exchange: "test_exchange",
119
+ exchangeType: "topic",
120
+ queue: "q.test",
121
+ pattern: "test.*",
122
+ };
123
+ expect(testOptions).toBeDefined();
124
+ expect(testOptions.url).toBe("amqp://localhost:5672");
125
+ expect(testOptions.exchange).toBe("test_exchange");
126
+ });
127
+ it("должен экспортировать тип RabbitMQSenderOptions", () => {
128
+ const testOptions = {
129
+ url: "amqp://localhost:5672",
130
+ exchange: "test_exchange",
131
+ exchangeType: "topic",
132
+ };
133
+ expect(testOptions).toBeDefined();
134
+ expect(testOptions.url).toBe("amqp://localhost:5672");
135
+ expect(testOptions.exchange).toBe("test_exchange");
136
+ });
137
+ it("должен экспортировать тип RabbitMQReceiverOptions", () => {
138
+ const testOptions = {
139
+ url: "amqp://localhost:5672",
140
+ exchange: "test_exchange",
141
+ exchangeType: "topic",
142
+ queue: "test.queue",
143
+ pattern: "test.*",
144
+ };
145
+ expect(testOptions).toBeDefined();
146
+ expect(testOptions.url).toBe("amqp://localhost:5672");
147
+ expect(testOptions.queue).toBe("test.queue");
148
+ expect(testOptions.pattern).toBe("test.*");
149
+ });
150
+ it("должен экспортировать тип RabbitMQReceiverSubscription", () => {
151
+ const testSubscription = {
152
+ name: "test-subscription",
153
+ queue: "test.queue",
154
+ pattern: "test.*",
155
+ };
156
+ expect(testSubscription).toBeDefined();
157
+ expect(testSubscription.name).toBe("test-subscription");
158
+ expect(testSubscription.queue).toBe("test.queue");
159
+ expect(testSubscription.pattern).toBe("test.*");
160
+ });
161
+ it("должен экспортировать тип RabbitMQReceiversConfig", () => {
162
+ const testConfig = {
163
+ url: "amqp://localhost:5672",
164
+ exchange: "test_exchange",
165
+ exchangeType: "topic",
166
+ subscriptions: [
167
+ {
168
+ name: "test-subscription",
169
+ queue: "test.queue1",
170
+ pattern: "test.*",
171
+ },
172
+ ],
173
+ };
174
+ expect(testConfig).toBeDefined();
175
+ expect(testConfig.url).toBe("amqp://localhost:5672");
176
+ expect(testConfig.subscriptions).toHaveLength(1);
177
+ });
178
+ it("должен экспортировать тип IdempotentMessage", () => {
179
+ const testMessage = {
180
+ id: "test-id",
181
+ timestamp: Date.now(),
182
+ data: "test",
183
+ };
184
+ expect(testMessage).toBeDefined();
185
+ expect(testMessage.id).toBe("test-id");
186
+ expect(testMessage.timestamp).toBeGreaterThan(0);
187
+ expect(testMessage.data).toBe("test");
188
+ });
189
+ it("должен экспортировать все компоненты пакета включая интерцептор и функции конфигурации", () => {
190
+ const allExports = {
191
+ RabbitMQModule,
192
+ RabbitMQService,
193
+ connectRabbitMQReceiver,
194
+ connectRabbitMQReceivers,
195
+ RabbitMQIdempotencyInterceptor,
196
+ createDLXConfig,
197
+ createReceiverConfig,
198
+ createRetryConfig,
199
+ };
200
+ Object.values(allExports).forEach((exportedItem) => {
201
+ expect(exportedItem).toBeDefined();
202
+ expect(typeof exportedItem).toBe("function");
203
+ });
204
+ });
205
+ });
206
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import "@jest/globals";
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Настройки для тестов Jest
2
+ import "@jest/globals";
3
+ // Глобальные моки для тестов
4
+ global.console = {
5
+ ...console,
6
+ // Отключаем логи в тестах для чистоты вывода
7
+ log: jest.fn(),
8
+ debug: jest.fn(),
9
+ info: jest.fn(),
10
+ warn: jest.fn(),
11
+ error: jest.fn(),
12
+ };
13
+ // Мокаем process.env для тестов
14
+ process.env.NODE_ENV = "test";
15
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,eAAe,CAAC;AAEvB,6BAA6B;AAC7B,MAAM,CAAC,OAAO,GAAG;IAChB,GAAG,OAAO;IACV,6CAA6C;IAC7C,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;CAChB,CAAC;AAEF,gCAAgC;AAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC"}