@volontariapp/outbox 0.1.2 → 0.2.0-snap-bbc2e76

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 (96) hide show
  1. package/CHANGELOG.md +6 -3
  2. package/dist/consumers/event-queue.consumer.d.ts +5 -0
  3. package/dist/consumers/event-queue.consumer.d.ts.map +1 -0
  4. package/dist/consumers/event-queue.consumer.js +4 -0
  5. package/dist/consumers/event-queue.consumer.js.map +1 -0
  6. package/dist/consumers/jobs-outbox.consumer.d.ts +5 -0
  7. package/dist/consumers/jobs-outbox.consumer.d.ts.map +1 -0
  8. package/dist/consumers/jobs-outbox.consumer.js +4 -0
  9. package/dist/consumers/jobs-outbox.consumer.js.map +1 -0
  10. package/dist/index.d.ts +4 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/test/consumers/event/event-queue.consumer.int.spec.d.ts +2 -0
  15. package/dist/test/consumers/event/event-queue.consumer.int.spec.d.ts.map +1 -0
  16. package/dist/test/consumers/event/event-queue.consumer.int.spec.js +99 -0
  17. package/dist/test/consumers/event/event-queue.consumer.int.spec.js.map +1 -0
  18. package/dist/test/consumers/event/event-queue.consumer.unit.spec.d.ts +2 -0
  19. package/dist/test/consumers/event/event-queue.consumer.unit.spec.d.ts.map +1 -0
  20. package/dist/test/consumers/event/event-queue.consumer.unit.spec.js +24 -0
  21. package/dist/test/consumers/event/event-queue.consumer.unit.spec.js.map +1 -0
  22. package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.d.ts +2 -0
  23. package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.d.ts.map +1 -0
  24. package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.js +78 -0
  25. package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.js.map +1 -0
  26. package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.d.ts +2 -0
  27. package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.d.ts.map +1 -0
  28. package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.js +24 -0
  29. package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.js.map +1 -0
  30. package/dist/test/utils/helpers/event-queue-repository-mock.helper.d.ts +5 -1
  31. package/dist/test/utils/helpers/event-queue-repository-mock.helper.d.ts.map +1 -1
  32. package/dist/test/utils/helpers/event-queue-repository-mock.helper.js +5 -0
  33. package/dist/test/utils/helpers/event-queue-repository-mock.helper.js.map +1 -1
  34. package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.d.ts +5 -1
  35. package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.d.ts.map +1 -1
  36. package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.js +5 -0
  37. package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.js.map +1 -1
  38. package/dist/test/utils/helpers/logger-mock.helper.d.ts +2 -9
  39. package/dist/test/utils/helpers/logger-mock.helper.d.ts.map +1 -1
  40. package/dist/test/utils/helpers/logger-mock.helper.js +10 -5
  41. package/dist/test/utils/helpers/logger-mock.helper.js.map +1 -1
  42. package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.d.ts +6 -0
  43. package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.d.ts.map +1 -0
  44. package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.js +48 -0
  45. package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.js.map +1 -0
  46. package/dist/test/utils/repositories/event-queue-test.repository.d.ts +3 -2
  47. package/dist/test/utils/repositories/event-queue-test.repository.d.ts.map +1 -1
  48. package/dist/test/utils/repositories/event-queue-test.repository.js +1 -1
  49. package/dist/test/utils/repositories/event-queue-test.repository.js.map +1 -1
  50. package/dist/test/utils/repositories/jobs-outbox-test.repository.d.ts +3 -2
  51. package/dist/test/utils/repositories/jobs-outbox-test.repository.d.ts.map +1 -1
  52. package/dist/test/utils/repositories/jobs-outbox-test.repository.js +1 -1
  53. package/dist/test/utils/repositories/jobs-outbox-test.repository.js.map +1 -1
  54. package/dist/test/writers/event/event-queue.writer.int.spec.d.ts.map +1 -0
  55. package/dist/test/{outbox → writers}/event/event-queue.writer.int.spec.js +5 -8
  56. package/dist/test/writers/event/event-queue.writer.int.spec.js.map +1 -0
  57. package/dist/test/writers/event/event-queue.writer.unit.spec.d.ts.map +1 -0
  58. package/dist/test/{outbox → writers}/event/event-queue.writer.unit.spec.js +3 -4
  59. package/dist/test/writers/event/event-queue.writer.unit.spec.js.map +1 -0
  60. package/dist/test/writers/jobs/jobs-outbox.writer.int.spec.d.ts.map +1 -0
  61. package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.int.spec.js +3 -3
  62. package/dist/test/writers/jobs/jobs-outbox.writer.int.spec.js.map +1 -0
  63. package/dist/test/writers/jobs/jobs-outbox.writer.unit.spec.d.ts.map +1 -0
  64. package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.unit.spec.js +15 -13
  65. package/dist/test/writers/jobs/jobs-outbox.writer.unit.spec.js.map +1 -0
  66. package/dist/writers/event-queue.writer.d.ts +5 -0
  67. package/dist/writers/event-queue.writer.d.ts.map +1 -0
  68. package/dist/writers/event-queue.writer.js.map +1 -0
  69. package/dist/writers/jobs-outbox.writer.d.ts +5 -0
  70. package/dist/writers/jobs-outbox.writer.d.ts.map +1 -0
  71. package/dist/writers/jobs-outbox.writer.js.map +1 -0
  72. package/package.json +2 -3
  73. package/dist/outbox/index.d.ts +0 -3
  74. package/dist/outbox/index.d.ts.map +0 -1
  75. package/dist/outbox/index.js +0 -3
  76. package/dist/outbox/index.js.map +0 -1
  77. package/dist/outbox/writer/event-queue.writer.d.ts +0 -4
  78. package/dist/outbox/writer/event-queue.writer.d.ts.map +0 -1
  79. package/dist/outbox/writer/event-queue.writer.js.map +0 -1
  80. package/dist/outbox/writer/jobs-outbox.writer.d.ts +0 -4
  81. package/dist/outbox/writer/jobs-outbox.writer.d.ts.map +0 -1
  82. package/dist/outbox/writer/jobs-outbox.writer.js.map +0 -1
  83. package/dist/test/outbox/event/event-queue.writer.int.spec.d.ts.map +0 -1
  84. package/dist/test/outbox/event/event-queue.writer.int.spec.js.map +0 -1
  85. package/dist/test/outbox/event/event-queue.writer.unit.spec.d.ts.map +0 -1
  86. package/dist/test/outbox/event/event-queue.writer.unit.spec.js.map +0 -1
  87. package/dist/test/outbox/jobs/jobs-outbox.writer.int.spec.d.ts.map +0 -1
  88. package/dist/test/outbox/jobs/jobs-outbox.writer.int.spec.js.map +0 -1
  89. package/dist/test/outbox/jobs/jobs-outbox.writer.unit.spec.d.ts.map +0 -1
  90. package/dist/test/outbox/jobs/jobs-outbox.writer.unit.spec.js.map +0 -1
  91. /package/dist/test/{outbox → writers}/event/event-queue.writer.int.spec.d.ts +0 -0
  92. /package/dist/test/{outbox → writers}/event/event-queue.writer.unit.spec.d.ts +0 -0
  93. /package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.int.spec.d.ts +0 -0
  94. /package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.unit.spec.d.ts +0 -0
  95. /package/dist/{outbox/writer → writers}/event-queue.writer.js +0 -0
  96. /package/dist/{outbox/writer → writers}/jobs-outbox.writer.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,12 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added outbox writers & consumers implementations
8
+
3
9
  ## 0.1.2
4
10
 
5
11
  ### Patch Changes
6
12
 
7
13
  - Updated dependencies []:
8
14
  - @volontariapp/errors@0.5.0
9
- - @volontariapp/database@1.8.1
10
15
 
11
16
  ## 0.1.1
12
17
 
@@ -15,8 +20,6 @@
15
20
  - Updated dependencies []:
16
21
  - @volontariapp/database@1.8.0
17
22
 
18
- All notable changes to this project will be documented in this file.
19
-
20
23
  ## 0.1.0
21
24
 
22
25
  ### Minor Changes
@@ -0,0 +1,5 @@
1
+ import type { EventQueueEntity, EventQueueModel } from '@volontariapp/database';
2
+ import { OutboxConsumer } from '@volontariapp/database';
3
+ export declare class EventQueueConsumer extends OutboxConsumer<EventQueueModel, EventQueueEntity> {
4
+ }
5
+ //# sourceMappingURL=event-queue.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.d.ts","sourceRoot":"","sources":["../../src/consumers/event-queue.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -0,0 +1,4 @@
1
+ import { OutboxConsumer } from '@volontariapp/database';
2
+ export class EventQueueConsumer extends OutboxConsumer {
3
+ }
4
+ //# sourceMappingURL=event-queue.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.js","sourceRoot":"","sources":["../../src/consumers/event-queue.consumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,kBAAmB,SAAQ,cAAiD;CAAG"}
@@ -0,0 +1,5 @@
1
+ import type { JobsOutboxEntity, JobsOutboxModel } from '@volontariapp/database';
2
+ import { OutboxConsumer } from '@volontariapp/database';
3
+ export declare class JobsOutboxConsumer extends OutboxConsumer<JobsOutboxModel, JobsOutboxEntity> {
4
+ }
5
+ //# sourceMappingURL=jobs-outbox.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.d.ts","sourceRoot":"","sources":["../../src/consumers/jobs-outbox.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -0,0 +1,4 @@
1
+ import { OutboxConsumer } from '@volontariapp/database';
2
+ export class JobsOutboxConsumer extends OutboxConsumer {
3
+ }
4
+ //# sourceMappingURL=jobs-outbox.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.js","sourceRoot":"","sources":["../../src/consumers/jobs-outbox.consumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,kBAAmB,SAAQ,cAAiD;CAAG"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,5 @@
1
- export * from './outbox/index.js';
1
+ export * from './writers/event-queue.writer.js';
2
+ export * from './writers/jobs-outbox.writer.js';
3
+ export * from './consumers/event-queue.consumer.js';
4
+ export * from './consumers/jobs-outbox.consumer.js';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,5 @@
1
- export * from './outbox/index.js';
1
+ export * from './writers/event-queue.writer.js';
2
+ export * from './writers/jobs-outbox.writer.js';
3
+ export * from './consumers/event-queue.consumer.js';
4
+ export * from './consumers/jobs-outbox.consumer.js';
2
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-queue.consumer.int.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/consumers/event/event-queue.consumer.int.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { describe, expect, it, beforeAll, afterAll, beforeEach } from '@jest/globals';
2
+ import { databaseMapper, EventQueueModel, EventQueueEntity, OutboxStatus, } from '@volontariapp/database';
3
+ import { testDataSource, initializeTestDb, closeTestDb } from '../../data-source.js';
4
+ import { EventQueueConsumer } from '../../../consumers/event-queue.consumer.js';
5
+ import { TestEventQueueRepository } from '../../utils/repositories/event-queue-test.repository.js';
6
+ import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
7
+ describe('EventQueueConsumer (Integration)', () => {
8
+ let consumer;
9
+ let repository;
10
+ const logger = makeLoggerMock();
11
+ beforeAll(async () => {
12
+ await initializeTestDb();
13
+ databaseMapper.registerBidirectional(EventQueueModel, EventQueueEntity);
14
+ repository = testDataSource.getRepository(EventQueueModel);
15
+ });
16
+ afterAll(async () => {
17
+ await closeTestDb();
18
+ });
19
+ beforeEach(async () => {
20
+ await repository.createQueryBuilder().delete().execute();
21
+ });
22
+ it('fetchPendingItems() should fetch pending items and mark them as processing', async () => {
23
+ const testRepository = new TestEventQueueRepository(repository);
24
+ consumer = new EventQueueConsumer(logger, testRepository, 10);
25
+ const eventId = '00000000-0000-0000-0000-000000000001';
26
+ const pendingItem = repository.create({
27
+ id: eventId,
28
+ type: 'test.event',
29
+ emitter: 'test.service',
30
+ status: OutboxStatus.PENDING,
31
+ payload: { after: { data: 'test' } },
32
+ createdAt: new Date(),
33
+ updatedAt: new Date(),
34
+ version: 1,
35
+ attempts: 0,
36
+ });
37
+ await repository.save(pendingItem);
38
+ const fetchedItems = await consumer.fetchPendingItems();
39
+ expect(fetchedItems).toHaveLength(1);
40
+ expect(fetchedItems[0]).toBeInstanceOf(EventQueueEntity);
41
+ expect(fetchedItems[0].id).toBe(eventId);
42
+ expect(fetchedItems[0].status).toBe(OutboxStatus.PROCESSING);
43
+ const dbItem = await repository.findOneByOrFail({ id: eventId });
44
+ expect(dbItem.status).toBe(OutboxStatus.PROCESSING);
45
+ expect(dbItem.updatedAt).toBeDefined();
46
+ });
47
+ it('fetchPendingItems() should return empty array when no pending items', async () => {
48
+ const testRepository = new TestEventQueueRepository(repository);
49
+ consumer = new EventQueueConsumer(logger, testRepository, 10);
50
+ const fetchedItems = await consumer.fetchPendingItems();
51
+ expect(fetchedItems).toHaveLength(0);
52
+ });
53
+ it('fetchPendingItems() should respect the size limit', async () => {
54
+ const testRepository = new TestEventQueueRepository(repository);
55
+ consumer = new EventQueueConsumer(logger, testRepository, 2);
56
+ const items = [1, 2, 3].map((i) => repository.create({
57
+ id: `00000000-0000-0000-0000-00000000000${i.toString()}`,
58
+ type: 'test.event',
59
+ emitter: 'test.service',
60
+ status: OutboxStatus.PENDING,
61
+ payload: { after: { i } },
62
+ createdAt: new Date(Date.now() + i),
63
+ updatedAt: new Date(),
64
+ version: 1,
65
+ attempts: 0,
66
+ }));
67
+ await repository.save(items);
68
+ const fetchedItems = await consumer.fetchPendingItems();
69
+ expect(fetchedItems).toHaveLength(2);
70
+ });
71
+ it('should handle parallel consumption correctly', async () => {
72
+ const testRepository = new TestEventQueueRepository(repository);
73
+ const consumer1 = new EventQueueConsumer(logger, testRepository, 2);
74
+ const consumer2 = new EventQueueConsumer(logger, testRepository, 2);
75
+ const consumer3 = new EventQueueConsumer(logger, testRepository, 2);
76
+ const items = [1, 2, 3, 4].map((i) => repository.create({
77
+ id: `00000000-0000-0000-0000-00000000000${i.toString()}`,
78
+ type: 'test.event',
79
+ emitter: 'test.service',
80
+ status: OutboxStatus.PENDING,
81
+ payload: { after: { i } },
82
+ createdAt: new Date(Date.now() + i),
83
+ updatedAt: new Date(),
84
+ version: 1,
85
+ attempts: 0,
86
+ }));
87
+ await repository.save(items);
88
+ const [res1, res2, res3] = await Promise.all([
89
+ consumer1.fetchPendingItems(),
90
+ consumer2.fetchPendingItems(),
91
+ consumer3.fetchPendingItems(),
92
+ ]);
93
+ const allFetched = [...res1, ...res2, ...res3];
94
+ expect(allFetched).toHaveLength(4);
95
+ const lengths = [res1.length, res2.length, res3.length].sort();
96
+ expect(lengths).toEqual([0, 2, 2]);
97
+ });
98
+ });
99
+ //# sourceMappingURL=event-queue.consumer.int.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/consumers/event/event-queue.consumer.int.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-queue.consumer.unit.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/consumers/event/event-queue.consumer.unit.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { describe, expect, it, beforeEach } from '@jest/globals';
2
+ import { EventQueueConsumer } from '../../../consumers/event-queue.consumer.js';
3
+ import { makeEventQueueConsumerRepositoryMock, } from '../../utils/helpers/event-queue-repository-mock.helper.js';
4
+ import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
5
+ describe('EventQueueConsumer (Unit)', () => {
6
+ let consumer;
7
+ let repository;
8
+ const logger = makeLoggerMock();
9
+ beforeEach(() => {
10
+ repository = makeEventQueueConsumerRepositoryMock();
11
+ consumer = new EventQueueConsumer(logger, repository, 10);
12
+ });
13
+ it('should be defined', () => {
14
+ expect(consumer).toBeDefined();
15
+ });
16
+ it('fetchPendingItems() should delegate to repository and return results', async () => {
17
+ const mockEntities = [{ id: '1' }, { id: '2' }];
18
+ repository.toEntities.mockReturnValue(mockEntities);
19
+ const result = await consumer.fetchPendingItems();
20
+ expect(repository.executeInTransaction).toHaveBeenCalled();
21
+ expect(result).toEqual(mockEntities);
22
+ });
23
+ });
24
+ //# sourceMappingURL=event-queue.consumer.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.consumer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/consumers/event/event-queue.consumer.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EACL,oCAAoC,GAErC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAG3E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,QAA4B,CAAC;IACjC,IAAI,UAA4C,CAAC;IACjD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,oCAAoC,EAAE,CAAC;QACpD,QAAQ,GAAG,IAAI,kBAAkB,CAC/B,MAAM,EACN,UAAuE,EACvE,EAAE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,YAAkC,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAElD,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobs-outbox.consumer.int.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/consumers/jobs/jobs-outbox.consumer.int.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { describe, expect, it, beforeAll, afterAll, beforeEach } from '@jest/globals';
2
+ import { databaseMapper, JobsOutboxModel, JobsOutboxEntity, OutboxStatus, } from '@volontariapp/database';
3
+ import { testDataSource, initializeTestDb, closeTestDb } from '../../data-source.js';
4
+ import { JobsOutboxConsumer } from '../../../consumers/jobs-outbox.consumer.js';
5
+ import { TestJobsOutboxRepository } from '../../utils/repositories/jobs-outbox-test.repository.js';
6
+ import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
7
+ describe('JobsOutboxConsumer (Integration)', () => {
8
+ let consumer;
9
+ let repository;
10
+ const logger = makeLoggerMock();
11
+ beforeAll(async () => {
12
+ await initializeTestDb();
13
+ databaseMapper.registerBidirectional(JobsOutboxModel, JobsOutboxEntity);
14
+ repository = testDataSource.getRepository(JobsOutboxModel);
15
+ });
16
+ afterAll(async () => {
17
+ await closeTestDb();
18
+ });
19
+ beforeEach(async () => {
20
+ await repository.createQueryBuilder().delete().execute();
21
+ });
22
+ it('fetchPendingItems() should fetch pending items and mark them as processing', async () => {
23
+ const testRepository = new TestJobsOutboxRepository(repository);
24
+ consumer = new JobsOutboxConsumer(logger, testRepository, 10);
25
+ const jobId = '00000000-0000-0000-0000-000000000001';
26
+ const pendingItem = repository.create({
27
+ id: jobId,
28
+ type: 'test.job',
29
+ emitter: 'test.service',
30
+ status: OutboxStatus.PENDING,
31
+ payload: { data: 'test' },
32
+ createdAt: new Date(),
33
+ updatedAt: new Date(),
34
+ scheduledAt: new Date(),
35
+ version: 1,
36
+ attempts: 0,
37
+ target: 'test.target',
38
+ });
39
+ await repository.save(pendingItem);
40
+ const fetchedItems = await consumer.fetchPendingItems();
41
+ expect(fetchedItems).toHaveLength(1);
42
+ expect(fetchedItems[0]).toBeInstanceOf(JobsOutboxEntity);
43
+ expect(fetchedItems[0].id).toBe(jobId);
44
+ expect(fetchedItems[0].status).toBe(OutboxStatus.PROCESSING);
45
+ const dbItem = await repository.findOneByOrFail({ id: jobId });
46
+ expect(dbItem.status).toBe(OutboxStatus.PROCESSING);
47
+ });
48
+ it('should handle parallel consumption correctly', async () => {
49
+ const testRepository = new TestJobsOutboxRepository(repository);
50
+ const consumer1 = new JobsOutboxConsumer(logger, testRepository, 2);
51
+ const consumer2 = new JobsOutboxConsumer(logger, testRepository, 2);
52
+ const consumer3 = new JobsOutboxConsumer(logger, testRepository, 2);
53
+ const items = [1, 2, 3, 4].map((i) => repository.create({
54
+ id: `00000000-0000-0000-0000-00000000000${i.toString()}`,
55
+ type: 'test.job',
56
+ emitter: 'test.service',
57
+ status: OutboxStatus.PENDING,
58
+ payload: { data: `test-${i.toString()}` },
59
+ createdAt: new Date(Date.now() + i),
60
+ updatedAt: new Date(),
61
+ scheduledAt: new Date(),
62
+ version: 1,
63
+ attempts: 0,
64
+ target: 'test.target',
65
+ }));
66
+ await repository.save(items);
67
+ const [res1, res2, res3] = await Promise.all([
68
+ consumer1.fetchPendingItems(),
69
+ consumer2.fetchPendingItems(),
70
+ consumer3.fetchPendingItems(),
71
+ ]);
72
+ const allFetched = [...res1, ...res2, ...res3];
73
+ expect(allFetched).toHaveLength(4);
74
+ const lengths = [res1.length, res2.length, res3.length].sort();
75
+ expect(lengths).toEqual([0, 2, 2]);
76
+ });
77
+ });
78
+ //# sourceMappingURL=jobs-outbox.consumer.int.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/consumers/jobs/jobs-outbox.consumer.int.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobs-outbox.consumer.unit.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/consumers/jobs/jobs-outbox.consumer.unit.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { describe, expect, it, beforeEach } from '@jest/globals';
2
+ import { JobsOutboxConsumer } from '../../../consumers/jobs-outbox.consumer.js';
3
+ import { makeJobsOutboxConsumerRepositoryMock, } from '../../utils/helpers/jobs-outbox-repository-mock.helper.js';
4
+ import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
5
+ describe('JobsOutboxConsumer (Unit)', () => {
6
+ let consumer;
7
+ let repository;
8
+ const logger = makeLoggerMock();
9
+ beforeEach(() => {
10
+ repository = makeJobsOutboxConsumerRepositoryMock();
11
+ consumer = new JobsOutboxConsumer(logger, repository, 10);
12
+ });
13
+ it('should be defined', () => {
14
+ expect(consumer).toBeDefined();
15
+ });
16
+ it('fetchPendingItems() should delegate to repository and return results', async () => {
17
+ const mockEntities = [{ id: '1' }, { id: '2' }];
18
+ repository.toEntities.mockReturnValue(mockEntities);
19
+ const result = await consumer.fetchPendingItems();
20
+ expect(repository.executeInTransaction).toHaveBeenCalled();
21
+ expect(result).toEqual(mockEntities);
22
+ });
23
+ });
24
+ //# sourceMappingURL=jobs-outbox.consumer.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.consumer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/consumers/jobs/jobs-outbox.consumer.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EACL,oCAAoC,GAErC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAG3E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,QAA4B,CAAC;IACjC,IAAI,UAA4C,CAAC;IACjD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,oCAAoC,EAAE,CAAC;QACpD,QAAQ,GAAG,IAAI,kBAAkB,CAC/B,MAAM,EACN,UAAuE,EACvE,EAAE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,YAAkC,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAElD,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,9 @@
1
- import { EventQueueEntity, EventQueueModel } from '@volontariapp/database';
1
+ import type { EventQueueEntity } from '@volontariapp/database';
2
+ import { EventQueueModel } from '@volontariapp/database';
2
3
  import { type OutboxWriterRepositoryMock } from './outbox-writer-mock.helper.js';
4
+ import { type OutboxConsumerRepositoryMock } from './outbox-consumer-repository-mock.helper.js';
3
5
  export type EventQueueRepositoryMock = OutboxWriterRepositoryMock<EventQueueModel, EventQueueEntity>;
4
6
  export declare function makeEventQueueRepositoryMock(): EventQueueRepositoryMock;
7
+ export type EventQueueConsumerRepositoryMock = OutboxConsumerRepositoryMock<EventQueueModel, EventQueueEntity>;
8
+ export declare function makeEventQueueConsumerRepositoryMock(): EventQueueConsumerRepositoryMock;
5
9
  //# sourceMappingURL=event-queue-repository-mock.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue-repository-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/event-queue-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAC/D,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,4BAA4B,IAAI,wBAAwB,CAEvE"}
1
+ {"version":3,"file":"event-queue-repository-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/event-queue-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AAErD,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAC/D,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,4BAA4B,IAAI,wBAAwB,CAEvE;AAED,MAAM,MAAM,gCAAgC,GAAG,4BAA4B,CACzE,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,oCAAoC,IAAI,gCAAgC,CAEvF"}
@@ -1,5 +1,10 @@
1
+ import { EventQueueModel } from '@volontariapp/database';
1
2
  import { makeOutboxWriterRepositoryMock, } from './outbox-writer-mock.helper.js';
3
+ import { makeOutboxConsumerRepositoryMock, } from './outbox-consumer-repository-mock.helper.js';
2
4
  export function makeEventQueueRepositoryMock() {
3
5
  return makeOutboxWriterRepositoryMock();
4
6
  }
7
+ export function makeEventQueueConsumerRepositoryMock() {
8
+ return makeOutboxConsumerRepositoryMock(EventQueueModel);
9
+ }
5
10
  //# sourceMappingURL=event-queue-repository-mock.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue-repository-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/event-queue-repository-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,GAE/B,MAAM,gCAAgC,CAAC;AAOxC,MAAM,UAAU,4BAA4B;IAC1C,OAAO,8BAA8B,EAAqC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"event-queue-repository-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/event-queue-repository-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,8BAA8B,GAE/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,gCAAgC,GAEjC,MAAM,6CAA6C,CAAC;AAOrD,MAAM,UAAU,4BAA4B;IAC1C,OAAO,8BAA8B,EAAqC,CAAC;AAC7E,CAAC;AAOD,MAAM,UAAU,oCAAoC;IAClD,OAAO,gCAAgC,CAAoC,eAAe,CAAC,CAAC;AAC9F,CAAC"}
@@ -1,5 +1,9 @@
1
- import { JobsOutboxEntity, JobsOutboxModel } from '@volontariapp/database';
1
+ import type { JobsOutboxEntity } from '@volontariapp/database';
2
+ import { JobsOutboxModel } from '@volontariapp/database';
2
3
  import { type OutboxWriterRepositoryMock } from './outbox-writer-mock.helper.js';
4
+ import { type OutboxConsumerRepositoryMock } from './outbox-consumer-repository-mock.helper.js';
3
5
  export type JobsOutboxRepositoryMock = OutboxWriterRepositoryMock<JobsOutboxModel, JobsOutboxEntity>;
4
6
  export declare function makeJobsOutboxRepositoryMock(): JobsOutboxRepositoryMock;
7
+ export type JobsOutboxConsumerRepositoryMock = OutboxConsumerRepositoryMock<JobsOutboxModel, JobsOutboxEntity>;
8
+ export declare function makeJobsOutboxConsumerRepositoryMock(): JobsOutboxConsumerRepositoryMock;
5
9
  //# sourceMappingURL=jobs-outbox-repository-mock.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox-repository-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/jobs-outbox-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAC/D,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,4BAA4B,IAAI,wBAAwB,CAEvE"}
1
+ {"version":3,"file":"jobs-outbox-repository-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/jobs-outbox-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AAErD,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAC/D,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,4BAA4B,IAAI,wBAAwB,CAEvE;AAED,MAAM,MAAM,gCAAgC,GAAG,4BAA4B,CACzE,eAAe,EACf,gBAAgB,CACjB,CAAC;AAEF,wBAAgB,oCAAoC,IAAI,gCAAgC,CAEvF"}
@@ -1,5 +1,10 @@
1
+ import { JobsOutboxModel } from '@volontariapp/database';
1
2
  import { makeOutboxWriterRepositoryMock, } from './outbox-writer-mock.helper.js';
3
+ import { makeOutboxConsumerRepositoryMock, } from './outbox-consumer-repository-mock.helper.js';
2
4
  export function makeJobsOutboxRepositoryMock() {
3
5
  return makeOutboxWriterRepositoryMock();
4
6
  }
7
+ export function makeJobsOutboxConsumerRepositoryMock() {
8
+ return makeOutboxConsumerRepositoryMock(JobsOutboxModel);
9
+ }
5
10
  //# sourceMappingURL=jobs-outbox-repository-mock.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox-repository-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/jobs-outbox-repository-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,GAE/B,MAAM,gCAAgC,CAAC;AAOxC,MAAM,UAAU,4BAA4B;IAC1C,OAAO,8BAA8B,EAAqC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"jobs-outbox-repository-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/jobs-outbox-repository-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,8BAA8B,GAE/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,gCAAgC,GAEjC,MAAM,6CAA6C,CAAC;AAOrD,MAAM,UAAU,4BAA4B;IAC1C,OAAO,8BAA8B,EAAqC,CAAC;AAC7E,CAAC;AAOD,MAAM,UAAU,oCAAoC;IAClD,OAAO,gCAAgC,CAAoC,eAAe,CAAC,CAAC;AAC9F,CAAC"}
@@ -1,10 +1,3 @@
1
- import { jest } from '@jest/globals';
2
- type LoggerLike = {
3
- info: (...args: unknown[]) => void;
4
- warn: (...args: unknown[]) => void;
5
- error: (...args: unknown[]) => void;
6
- };
7
- export type TestLoggerMock = LoggerLike & jest.Mocked<Pick<LoggerLike, 'info' | 'warn' | 'error'>>;
8
- export declare const makeLoggerMock: () => TestLoggerMock;
9
- export {};
1
+ import { Logger } from '@volontariapp/logger';
2
+ export declare const makeLoggerMock: () => Logger;
10
3
  //# sourceMappingURL=logger-mock.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/logger-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAEnG,eAAO,MAAM,cAAc,QAAO,cAMjC,CAAC"}
1
+ {"version":3,"file":"logger-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/logger-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,eAAO,MAAM,cAAc,QAAO,MAUjC,CAAC"}
@@ -1,9 +1,14 @@
1
1
  import { jest } from '@jest/globals';
2
+ import { Logger } from '@volontariapp/logger';
2
3
  export const makeLoggerMock = () => {
3
- return {
4
- info: jest.fn(),
5
- warn: jest.fn(),
6
- error: jest.fn(),
7
- };
4
+ const logger = new Logger({ minLevel: 'fatal' });
5
+ jest.spyOn(logger, 'info').mockImplementation(() => { });
6
+ jest.spyOn(logger, 'warn').mockImplementation(() => { });
7
+ jest.spyOn(logger, 'error').mockImplementation(() => { });
8
+ jest.spyOn(logger, 'debug').mockImplementation(() => { });
9
+ jest.spyOn(logger, 'fatal').mockImplementation(() => { });
10
+ jest.spyOn(logger, 'verbose').mockImplementation(() => { });
11
+ jest.spyOn(logger, 'log').mockImplementation(() => { });
12
+ return logger;
8
13
  };
9
14
  //# sourceMappingURL=logger-mock.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/logger-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAmB,EAAE;IACjD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACY,CAAC;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"logger-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/logger-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jest } from '@jest/globals';
2
+ import type { OutboxEntity, OutboxModel } from '@volontariapp/database';
3
+ import type { BaseRepository } from '@volontariapp/database';
4
+ export type OutboxConsumerRepositoryMock<TModel extends OutboxModel, TEntity extends OutboxEntity> = jest.Mocked<BaseRepository<TModel, TEntity, string>>;
5
+ export declare function makeOutboxConsumerRepositoryMock<TModel extends OutboxModel, TEntity extends OutboxEntity>(modelClass: new () => TModel): OutboxConsumerRepositoryMock<TModel, TEntity>;
6
+ //# sourceMappingURL=outbox-consumer-repository-mock.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-consumer-repository-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/outbox-consumer-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,MAAM,wBAAwB,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,MAAM,MAAM,4BAA4B,CACtC,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,YAAY,IAC1B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzD,wBAAgB,gCAAgC,CAC9C,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,YAAY,EAC5B,UAAU,EAAE,UAAU,MAAM,GAAG,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,CAmD7E"}
@@ -0,0 +1,48 @@
1
+ import { jest } from '@jest/globals';
2
+ export function makeOutboxConsumerRepositoryMock(modelClass) {
3
+ const queryBuilderMock = {
4
+ setLock: jest.fn().mockReturnThis(),
5
+ setOnLocked: jest.fn().mockReturnThis(),
6
+ where: jest.fn().mockReturnThis(),
7
+ orderBy: jest.fn().mockReturnThis(),
8
+ take: jest.fn().mockReturnThis(),
9
+ getMany: jest.fn().mockResolvedValue([]),
10
+ update: jest.fn().mockReturnThis(),
11
+ set: jest.fn().mockReturnThis(),
12
+ whereInIds: jest.fn().mockReturnThis(),
13
+ returning: jest.fn().mockReturnThis(),
14
+ execute: jest.fn().mockResolvedValue({
15
+ raw: [{ id: 'dummy-id' }],
16
+ generatedMaps: [],
17
+ }),
18
+ };
19
+ const queryRunnerMock = {
20
+ manager: {
21
+ createQueryBuilder: jest.fn().mockReturnValue(queryBuilderMock),
22
+ },
23
+ };
24
+ const mockRepository = {
25
+ metadata: {
26
+ target: modelClass,
27
+ tableName: 'test_table',
28
+ },
29
+ executeInTransaction: jest.fn((work) => work(queryRunnerMock)),
30
+ toEntities: jest.fn((models) => models),
31
+ toEntity: jest.fn((model) => model),
32
+ find: jest.fn(),
33
+ findOne: jest.fn(),
34
+ findOneOrFail: jest.fn(),
35
+ findById: jest.fn(),
36
+ create: jest.fn(),
37
+ createMany: jest.fn(),
38
+ update: jest.fn(),
39
+ delete: jest.fn(),
40
+ repository: {},
41
+ entityClass: {},
42
+ modelClass: {},
43
+ mapper: {},
44
+ logger: {},
45
+ };
46
+ return mockRepository;
47
+ }
48
+ //# sourceMappingURL=outbox-consumer-repository-mock.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-consumer-repository-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/outbox-consumer-repository-mock.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiBrC,MAAM,UAAU,gCAAgC,CAG9C,UAA4B;IAC5B,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,OAAO,EAAE,IAAI,CAAC,EAAE,EAA2B,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAClC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACtC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACrC,OAAO,EAAE,IAAI,CAAC,EAAE,EAA+B,CAAC,iBAAiB,CAAC;YAChE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YACzB,aAAa,EAAE,EAAE;SACF,CAAC;KACsB,CAAC;IAE3C,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE;YACP,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC;SAChE;KACwB,CAAC;IAE5B,MAAM,cAAc,GAAG;QACrB,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,YAAY;SACK;QAC9B,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAC3B,CAAI,IAA8C,EAAc,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CACzF;QACD,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAgB,EAAE,EAAE,CAAC,MAA8B,CAAC;QACzE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAA2B,CAAC;QACjE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;QACxB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QAEjB,UAAU,EAAE,EAAwB;QACpC,WAAW,EAAE,EAA0B;QACvC,UAAU,EAAE,EAAyB;QACrC,MAAM,EAAE,EAA8B;QACtC,MAAM,EAAE,EAAuB;KAChC,CAAC;IAEF,OAAO,cAA0E,CAAC;AACpF,CAAC"}
@@ -1,5 +1,6 @@
1
- import { BaseRepository, EventQueueEntity, EventQueueModel, type Repository } from '@volontariapp/database';
2
- export declare class TestEventQueueWriterRepository extends BaseRepository<EventQueueModel, EventQueueEntity, string> {
1
+ import { BaseRepository, EventQueueEntity, EventQueueModel } from '@volontariapp/database';
2
+ import type { Repository } from 'typeorm';
3
+ export declare class TestEventQueueRepository extends BaseRepository<EventQueueModel, EventQueueEntity, string> {
3
4
  constructor(repository: Repository<EventQueueModel>);
4
5
  }
5
6
  //# sourceMappingURL=event-queue-test.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue-test.repository.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/repositories/event-queue-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE5G,qBAAa,8BAA+B,SAAQ,cAAc,CAChE,eAAe,EACf,gBAAgB,EAChB,MAAM,CACP;gBACa,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC;CAGpD"}
1
+ {"version":3,"file":"event-queue-test.repository.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/repositories/event-queue-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,eAAe,EACf,gBAAgB,EAChB,MAAM,CACP;gBACa,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC;CAGpD"}
@@ -1,5 +1,5 @@
1
1
  import { BaseRepository, EventQueueEntity, EventQueueModel } from '@volontariapp/database';
2
- export class TestEventQueueWriterRepository extends BaseRepository {
2
+ export class TestEventQueueRepository extends BaseRepository {
3
3
  constructor(repository) {
4
4
  super(repository, EventQueueEntity, EventQueueModel);
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue-test.repository.js","sourceRoot":"","sources":["../../../../src/test/utils/repositories/event-queue-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAE5G,MAAM,OAAO,8BAA+B,SAAQ,cAInD;IACC,YAAY,UAAuC;QACjD,KAAK,CAAC,UAAmB,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"event-queue-test.repository.js","sourceRoot":"","sources":["../../../../src/test/utils/repositories/event-queue-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG3F,MAAM,OAAO,wBAAyB,SAAQ,cAI7C;IACC,YAAY,UAAuC;QACjD,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
- import { BaseRepository, JobsOutboxEntity, JobsOutboxModel, type Repository } from '@volontariapp/database';
2
- export declare class TestJobsOutboxWriterRepository extends BaseRepository<JobsOutboxModel, JobsOutboxEntity, string> {
1
+ import { BaseRepository, JobsOutboxEntity, JobsOutboxModel } from '@volontariapp/database';
2
+ import type { Repository } from 'typeorm';
3
+ export declare class TestJobsOutboxRepository extends BaseRepository<JobsOutboxModel, JobsOutboxEntity, string> {
3
4
  constructor(repository: Repository<JobsOutboxModel>);
4
5
  }
5
6
  //# sourceMappingURL=jobs-outbox-test.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox-test.repository.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/repositories/jobs-outbox-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE5G,qBAAa,8BAA+B,SAAQ,cAAc,CAChE,eAAe,EACf,gBAAgB,EAChB,MAAM,CACP;gBACa,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC;CAGpD"}
1
+ {"version":3,"file":"jobs-outbox-test.repository.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/repositories/jobs-outbox-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,eAAe,EACf,gBAAgB,EAChB,MAAM,CACP;gBACa,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC;CAGpD"}
@@ -1,5 +1,5 @@
1
1
  import { BaseRepository, JobsOutboxEntity, JobsOutboxModel } from '@volontariapp/database';
2
- export class TestJobsOutboxWriterRepository extends BaseRepository {
2
+ export class TestJobsOutboxRepository extends BaseRepository {
3
3
  constructor(repository) {
4
4
  super(repository, JobsOutboxEntity, JobsOutboxModel);
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox-test.repository.js","sourceRoot":"","sources":["../../../../src/test/utils/repositories/jobs-outbox-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAE5G,MAAM,OAAO,8BAA+B,SAAQ,cAInD;IACC,YAAY,UAAuC;QACjD,KAAK,CAAC,UAAmB,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"jobs-outbox-test.repository.js","sourceRoot":"","sources":["../../../../src/test/utils/repositories/jobs-outbox-test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG3F,MAAM,OAAO,wBAAyB,SAAQ,cAI7C;IACC,YAAY,UAAuC;QACjD,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/writers/event/event-queue.writer.int.spec.ts"],"names":[],"mappings":""}
@@ -1,20 +1,17 @@
1
1
  import { describe, expect, it, beforeAll, afterAll, beforeEach } from '@jest/globals';
2
2
  import { databaseMapper, EventQueueModel, EventQueueEntity, OutboxStatus, } from '@volontariapp/database';
3
3
  import { testDataSource, initializeTestDb, closeTestDb } from '../../data-source.js';
4
- import { EventQueueWriter } from '../../../outbox/writer/event-queue.writer.js';
4
+ import { EventQueueWriter } from '../../../writers/event-queue.writer.js';
5
5
  import { makeEventQueueEvent } from '../../utils/helpers/event-queue-event.helper.js';
6
- import { TestEventQueueWriterRepository } from '../../utils/repositories/event-queue-test.repository.js';
6
+ import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
7
+ import { TestEventQueueRepository } from '../../utils/repositories/event-queue-test.repository.js';
7
8
  describe('EventQueueWriter (Full Integration)', () => {
8
9
  let writer;
9
- const logger = {
10
- info: () => undefined,
11
- warn: () => undefined,
12
- error: () => undefined,
13
- };
10
+ const logger = makeLoggerMock();
14
11
  beforeAll(async () => {
15
12
  await initializeTestDb();
16
13
  databaseMapper.registerBidirectional(EventQueueModel, EventQueueEntity);
17
- writer = new EventQueueWriter(logger, new TestEventQueueWriterRepository(testDataSource.getRepository(EventQueueModel)));
14
+ writer = new EventQueueWriter(logger, new TestEventQueueRepository(testDataSource.getRepository(EventQueueModel)));
18
15
  });
19
16
  afterAll(async () => {
20
17
  await closeTestDb();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/writers/event/event-queue.writer.int.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yDAAyD,CAAC;AAEnG,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,MAAwB,CAAC;IAC7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,gBAAgB,EAAE,CAAC;QACzB,cAAc,CAAC,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACxE,MAAM,GAAG,IAAI,gBAAgB,CAC3B,MAAM,EACN,IAAI,wBAAwB,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAC5E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,WAAW,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAEpC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,MAAM,cAAc;aAC7B,aAAa,CAAC,eAAe,CAAC;aAC9B,eAAe,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAErD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAChC,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;aAC9C;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,MAAM,cAAc;aAC7B,aAAa,CAAC,eAAe,CAAC;aAC9B,eAAe,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAEvD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YAC1B,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/writers/event/event-queue.writer.unit.spec.ts"],"names":[],"mappings":""}
@@ -1,16 +1,15 @@
1
1
  import { describe, expect, it, beforeEach } from '@jest/globals';
2
- import { OutboxStatus } from '@volontariapp/database';
3
- import { EventQueueWriter } from '../../../outbox/writer/event-queue.writer.js';
2
+ import { OutboxStatus, } from '@volontariapp/database';
3
+ import { EventQueueWriter } from '../../../writers/event-queue.writer.js';
4
4
  import { makeEventQueueEvent } from '../../utils/helpers/event-queue-event.helper.js';
5
5
  import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
6
6
  import { makeEventQueueRepositoryMock, } from '../../utils/helpers/event-queue-repository-mock.helper.js';
7
7
  describe('EventQueueWriter (Unit)', () => {
8
8
  let writer;
9
9
  let repository;
10
- let logger;
11
10
  beforeEach(() => {
12
11
  repository = makeEventQueueRepositoryMock();
13
- logger = makeLoggerMock();
12
+ const logger = makeLoggerMock();
14
13
  writer = new EventQueueWriter(logger, repository);
15
14
  });
16
15
  it('create() should pass default values when not overridden', async () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/writers/event/event-queue.writer.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/writers/jobs/jobs-outbox.writer.int.spec.ts"],"names":[],"mappings":""}
@@ -1,9 +1,9 @@
1
1
  import { describe, expect, it, beforeAll, afterAll, beforeEach } from '@jest/globals';
2
2
  import { databaseMapper, JobsOutboxModel, JobsOutboxEntity, OutboxStatus, } from '@volontariapp/database';
3
3
  import { testDataSource, initializeTestDb, closeTestDb } from '../../data-source.js';
4
- import { JobsOutboxWriter } from '../../../outbox/writer/jobs-outbox.writer.js';
4
+ import { JobsOutboxWriter } from '../../../writers/jobs-outbox.writer.js';
5
5
  import { makeJobsOutboxEvent } from '../../utils/helpers/jobs-outbox-event.helper.js';
6
- import { TestJobsOutboxWriterRepository } from '../../utils/repositories/jobs-outbox-test.repository.js';
6
+ import { TestJobsOutboxRepository } from '../../utils/repositories/jobs-outbox-test.repository.js';
7
7
  import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
8
8
  describe('JobsOutboxWriter (Full Integration)', () => {
9
9
  let writer;
@@ -11,7 +11,7 @@ describe('JobsOutboxWriter (Full Integration)', () => {
11
11
  beforeAll(async () => {
12
12
  await initializeTestDb();
13
13
  databaseMapper.registerBidirectional(JobsOutboxModel, JobsOutboxEntity);
14
- writer = new JobsOutboxWriter(logger, new TestJobsOutboxWriterRepository(testDataSource.getRepository(JobsOutboxModel)));
14
+ writer = new JobsOutboxWriter(logger, new TestJobsOutboxRepository(testDataSource.getRepository(JobsOutboxModel)));
15
15
  });
16
16
  afterAll(async () => {
17
17
  await closeTestDb();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/writers/jobs/jobs-outbox.writer.int.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/writers/jobs/jobs-outbox.writer.unit.spec.ts"],"names":[],"mappings":""}
@@ -1,16 +1,15 @@
1
1
  import { describe, expect, it, beforeEach } from '@jest/globals';
2
- import { OutboxStatus } from '@volontariapp/database';
3
- import { JobsOutboxWriter } from '../../../outbox/writer/jobs-outbox.writer.js';
2
+ import { OutboxStatus, } from '@volontariapp/database';
3
+ import { JobsOutboxWriter } from '../../../writers/jobs-outbox.writer.js';
4
4
  import { makeJobsOutboxEvent } from '../../utils/helpers/jobs-outbox-event.helper.js';
5
5
  import { makeLoggerMock } from '../../utils/helpers/logger-mock.helper.js';
6
6
  import { makeJobsOutboxRepositoryMock, } from '../../utils/helpers/jobs-outbox-repository-mock.helper.js';
7
7
  describe('JobsOutboxWriter (Unit)', () => {
8
8
  let writer;
9
9
  let repository;
10
- let logger;
11
10
  beforeEach(() => {
12
11
  repository = makeJobsOutboxRepositoryMock();
13
- logger = makeLoggerMock();
12
+ const logger = makeLoggerMock();
14
13
  writer = new JobsOutboxWriter(logger, repository);
15
14
  });
16
15
  it('create() should pass default values when not overridden', async () => {
@@ -20,23 +19,26 @@ describe('JobsOutboxWriter (Unit)', () => {
20
19
  const created = repository.create.mock.calls[0][0];
21
20
  expect(created.status).toBe(OutboxStatus.PENDING);
22
21
  expect(created.attempts).toBe(0);
23
- expect(created.target).toBe('queue:default');
24
22
  expect(created.payload).toEqual({ action: 'process-user', data: { userId: 'u-1' } });
25
23
  });
26
24
  it('create() should keep overridden values when provided', async () => {
27
25
  const event = makeJobsOutboxEvent({
28
- status: OutboxStatus.PROCESSING,
29
- attempts: 3,
30
- target: 'queue:high-priority',
31
- payload: { action: 'retry-job', data: { userId: 'u-42' } },
26
+ status: OutboxStatus.FAILED,
27
+ attempts: 2,
28
+ payload: {
29
+ action: 'overridden-job',
30
+ data: { id: 'entity-2' },
31
+ },
32
32
  });
33
33
  await writer.create(event);
34
34
  expect(repository.create).toHaveBeenCalledTimes(1);
35
35
  const created = repository.create.mock.calls[0][0];
36
- expect(created.status).toBe(OutboxStatus.PROCESSING);
37
- expect(created.attempts).toBe(3);
38
- expect(created.target).toBe('queue:high-priority');
39
- expect(created.payload).toEqual({ action: 'retry-job', data: { userId: 'u-42' } });
36
+ expect(created.status).toBe(OutboxStatus.FAILED);
37
+ expect(created.attempts).toBe(2);
38
+ expect(created.payload).toEqual({
39
+ action: 'overridden-job',
40
+ data: { id: 'entity-2' },
41
+ });
40
42
  });
41
43
  });
42
44
  //# sourceMappingURL=jobs-outbox.writer.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/writers/jobs/jobs-outbox.writer.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,YAAY,GAIb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EACL,4BAA4B,GAE7B,MAAM,2DAA2D,CAAC;AAEnE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,MAAwB,CAAC;IAC7B,IAAI,UAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,4BAA4B,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,GAAG,IAAI,gBAAgB,CAC3B,MAAM,EACN,UAAkF,CACnF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAEpC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE;gBACP,MAAM,EAAE,gBAAgB;gBACxB,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YAC9B,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EventQueueEntity, EventQueueModel } from '@volontariapp/database';
2
+ import { OutboxWriter } from '@volontariapp/database';
3
+ export declare class EventQueueWriter extends OutboxWriter<EventQueueModel, EventQueueEntity> {
4
+ }
5
+ //# sourceMappingURL=event-queue.writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.d.ts","sourceRoot":"","sources":["../../src/writers/event-queue.writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.writer.js","sourceRoot":"","sources":["../../src/writers/event-queue.writer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,gBAAiB,SAAQ,YAA+C;CAAG"}
@@ -0,0 +1,5 @@
1
+ import type { JobsOutboxEntity, JobsOutboxModel } from '@volontariapp/database';
2
+ import { OutboxWriter } from '@volontariapp/database';
3
+ export declare class JobsOutboxWriter extends OutboxWriter<JobsOutboxModel, JobsOutboxEntity> {
4
+ }
5
+ //# sourceMappingURL=jobs-outbox.writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.d.ts","sourceRoot":"","sources":["../../src/writers/jobs-outbox.writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-outbox.writer.js","sourceRoot":"","sources":["../../src/writers/jobs-outbox.writer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,gBAAiB,SAAQ,YAA+C;CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/outbox",
3
- "version": "0.1.2",
3
+ "version": "0.2.0-snap-bbc2e76",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -37,7 +37,7 @@
37
37
  "db:down": "docker-compose -f ../../docker-compose.test.yml down"
38
38
  },
39
39
  "dependencies": {
40
- "@volontariapp/database": "1.8.0",
40
+ "@volontariapp/database": "1.8.0-snap-bbc2e76",
41
41
  "@volontariapp/errors": "0.5.0",
42
42
  "@volontariapp/logger": "0.2.3"
43
43
  },
@@ -49,7 +49,6 @@
49
49
  "jest": "^30.3.0",
50
50
  "ts-jest": "^29.4.6",
51
51
  "ts-node": "^10.9.2",
52
- "typeorm": "^0.3.28",
53
52
  "typescript": "5.7.3"
54
53
  }
55
54
  }
@@ -1,3 +0,0 @@
1
- export * from './writer/event-queue.writer.js';
2
- export * from './writer/jobs-outbox.writer.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './writer/event-queue.writer.js';
2
- export * from './writer/jobs-outbox.writer.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
@@ -1,4 +0,0 @@
1
- import { EventQueueEntity, EventQueueModel, OutboxWriter } from '@volontariapp/database';
2
- export declare class EventQueueWriter extends OutboxWriter<EventQueueModel, EventQueueEntity> {
3
- }
4
- //# sourceMappingURL=event-queue.writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.d.ts","sourceRoot":"","sources":["../../../src/outbox/writer/event-queue.writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzF,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.js","sourceRoot":"","sources":["../../../src/outbox/writer/event-queue.writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,OAAO,gBAAiB,SAAQ,YAA+C;CAAG"}
@@ -1,4 +0,0 @@
1
- import { JobsOutboxEntity, JobsOutboxModel, OutboxWriter } from '@volontariapp/database';
2
- export declare class JobsOutboxWriter extends OutboxWriter<JobsOutboxModel, JobsOutboxEntity> {
3
- }
4
- //# sourceMappingURL=jobs-outbox.writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.d.ts","sourceRoot":"","sources":["../../../src/outbox/writer/jobs-outbox.writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzF,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.js","sourceRoot":"","sources":["../../../src/outbox/writer/jobs-outbox.writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,OAAO,gBAAiB,SAAQ,YAA+C;CAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/event/event-queue.writer.int.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/event/event-queue.writer.int.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/event/event-queue.writer.unit.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-queue.writer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/event/event-queue.writer.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/jobs/jobs-outbox.writer.int.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.int.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/jobs/jobs-outbox.writer.int.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/jobs/jobs-outbox.writer.unit.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-outbox.writer.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/jobs/jobs-outbox.writer.unit.spec.ts"],"names":[],"mappings":"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"}