@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.
- package/CHANGELOG.md +6 -3
- package/dist/consumers/event-queue.consumer.d.ts +5 -0
- package/dist/consumers/event-queue.consumer.d.ts.map +1 -0
- package/dist/consumers/event-queue.consumer.js +4 -0
- package/dist/consumers/event-queue.consumer.js.map +1 -0
- package/dist/consumers/jobs-outbox.consumer.d.ts +5 -0
- package/dist/consumers/jobs-outbox.consumer.d.ts.map +1 -0
- package/dist/consumers/jobs-outbox.consumer.js +4 -0
- package/dist/consumers/jobs-outbox.consumer.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/test/consumers/event/event-queue.consumer.int.spec.d.ts +2 -0
- package/dist/test/consumers/event/event-queue.consumer.int.spec.d.ts.map +1 -0
- package/dist/test/consumers/event/event-queue.consumer.int.spec.js +99 -0
- package/dist/test/consumers/event/event-queue.consumer.int.spec.js.map +1 -0
- package/dist/test/consumers/event/event-queue.consumer.unit.spec.d.ts +2 -0
- package/dist/test/consumers/event/event-queue.consumer.unit.spec.d.ts.map +1 -0
- package/dist/test/consumers/event/event-queue.consumer.unit.spec.js +24 -0
- package/dist/test/consumers/event/event-queue.consumer.unit.spec.js.map +1 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.d.ts +2 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.d.ts.map +1 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.js +78 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.int.spec.js.map +1 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.d.ts +2 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.d.ts.map +1 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.js +24 -0
- package/dist/test/consumers/jobs/jobs-outbox.consumer.unit.spec.js.map +1 -0
- package/dist/test/utils/helpers/event-queue-repository-mock.helper.d.ts +5 -1
- package/dist/test/utils/helpers/event-queue-repository-mock.helper.d.ts.map +1 -1
- package/dist/test/utils/helpers/event-queue-repository-mock.helper.js +5 -0
- package/dist/test/utils/helpers/event-queue-repository-mock.helper.js.map +1 -1
- package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.d.ts +5 -1
- package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.d.ts.map +1 -1
- package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.js +5 -0
- package/dist/test/utils/helpers/jobs-outbox-repository-mock.helper.js.map +1 -1
- package/dist/test/utils/helpers/logger-mock.helper.d.ts +2 -9
- package/dist/test/utils/helpers/logger-mock.helper.d.ts.map +1 -1
- package/dist/test/utils/helpers/logger-mock.helper.js +10 -5
- package/dist/test/utils/helpers/logger-mock.helper.js.map +1 -1
- package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.d.ts +6 -0
- package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.d.ts.map +1 -0
- package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.js +48 -0
- package/dist/test/utils/helpers/outbox-consumer-repository-mock.helper.js.map +1 -0
- package/dist/test/utils/repositories/event-queue-test.repository.d.ts +3 -2
- package/dist/test/utils/repositories/event-queue-test.repository.d.ts.map +1 -1
- package/dist/test/utils/repositories/event-queue-test.repository.js +1 -1
- package/dist/test/utils/repositories/event-queue-test.repository.js.map +1 -1
- package/dist/test/utils/repositories/jobs-outbox-test.repository.d.ts +3 -2
- package/dist/test/utils/repositories/jobs-outbox-test.repository.d.ts.map +1 -1
- package/dist/test/utils/repositories/jobs-outbox-test.repository.js +1 -1
- package/dist/test/utils/repositories/jobs-outbox-test.repository.js.map +1 -1
- package/dist/test/writers/event/event-queue.writer.int.spec.d.ts.map +1 -0
- package/dist/test/{outbox → writers}/event/event-queue.writer.int.spec.js +5 -8
- package/dist/test/writers/event/event-queue.writer.int.spec.js.map +1 -0
- package/dist/test/writers/event/event-queue.writer.unit.spec.d.ts.map +1 -0
- package/dist/test/{outbox → writers}/event/event-queue.writer.unit.spec.js +3 -4
- package/dist/test/writers/event/event-queue.writer.unit.spec.js.map +1 -0
- package/dist/test/writers/jobs/jobs-outbox.writer.int.spec.d.ts.map +1 -0
- package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.int.spec.js +3 -3
- package/dist/test/writers/jobs/jobs-outbox.writer.int.spec.js.map +1 -0
- package/dist/test/writers/jobs/jobs-outbox.writer.unit.spec.d.ts.map +1 -0
- package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.unit.spec.js +15 -13
- package/dist/test/writers/jobs/jobs-outbox.writer.unit.spec.js.map +1 -0
- package/dist/writers/event-queue.writer.d.ts +5 -0
- package/dist/writers/event-queue.writer.d.ts.map +1 -0
- package/dist/writers/event-queue.writer.js.map +1 -0
- package/dist/writers/jobs-outbox.writer.d.ts +5 -0
- package/dist/writers/jobs-outbox.writer.d.ts.map +1 -0
- package/dist/writers/jobs-outbox.writer.js.map +1 -0
- package/package.json +2 -3
- package/dist/outbox/index.d.ts +0 -3
- package/dist/outbox/index.d.ts.map +0 -1
- package/dist/outbox/index.js +0 -3
- package/dist/outbox/index.js.map +0 -1
- package/dist/outbox/writer/event-queue.writer.d.ts +0 -4
- package/dist/outbox/writer/event-queue.writer.d.ts.map +0 -1
- package/dist/outbox/writer/event-queue.writer.js.map +0 -1
- package/dist/outbox/writer/jobs-outbox.writer.d.ts +0 -4
- package/dist/outbox/writer/jobs-outbox.writer.d.ts.map +0 -1
- package/dist/outbox/writer/jobs-outbox.writer.js.map +0 -1
- package/dist/test/outbox/event/event-queue.writer.int.spec.d.ts.map +0 -1
- package/dist/test/outbox/event/event-queue.writer.int.spec.js.map +0 -1
- package/dist/test/outbox/event/event-queue.writer.unit.spec.d.ts.map +0 -1
- package/dist/test/outbox/event/event-queue.writer.unit.spec.js.map +0 -1
- package/dist/test/outbox/jobs/jobs-outbox.writer.int.spec.d.ts.map +0 -1
- package/dist/test/outbox/jobs/jobs-outbox.writer.int.spec.js.map +0 -1
- package/dist/test/outbox/jobs/jobs-outbox.writer.unit.spec.d.ts.map +0 -1
- package/dist/test/outbox/jobs/jobs-outbox.writer.unit.spec.js.map +0 -1
- /package/dist/test/{outbox → writers}/event/event-queue.writer.int.spec.d.ts +0 -0
- /package/dist/test/{outbox → writers}/event/event-queue.writer.unit.spec.d.ts +0 -0
- /package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.int.spec.d.ts +0 -0
- /package/dist/test/{outbox → writers}/jobs/jobs-outbox.writer.unit.spec.d.ts +0 -0
- /package/dist/{outbox/writer → writers}/event-queue.writer.js +0 -0
- /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 @@
|
|
|
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 @@
|
|
|
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 './
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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 './
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
|
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;
|
|
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;
|
|
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
|
|
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;
|
|
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;
|
|
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 {
|
|
2
|
-
|
|
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":"
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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;
|
|
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
|
|
2
|
-
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
2
|
-
|
|
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,
|
|
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
|
|
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,
|
|
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 '../../../
|
|
4
|
+
import { EventQueueWriter } from '../../../writers/event-queue.writer.js';
|
|
5
5
|
import { makeEventQueueEvent } from '../../utils/helpers/event-queue-event.helper.js';
|
|
6
|
-
import {
|
|
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
|
|
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":"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"}
|
|
@@ -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 '../../../
|
|
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 '../../../
|
|
4
|
+
import { JobsOutboxWriter } from '../../../writers/jobs-outbox.writer.js';
|
|
5
5
|
import { makeJobsOutboxEvent } from '../../utils/helpers/jobs-outbox-event.helper.js';
|
|
6
|
-
import {
|
|
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
|
|
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":"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,wBAAwB,EAAE,MAAM,yDAAyD,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,MAAwB,CAAC;IAC7B,MAAM,MAAM,GAAW,cAAc,EAAE,CAAC;IAExC,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,cAAc,EAAE,CAAC,CAAC;QAE7C,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,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAChC,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,YAAY,CAAC,UAAU;YAC/B,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC1D,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;SAClD,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,YAAY,EAAE,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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 '../../../
|
|
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.
|
|
29
|
-
attempts:
|
|
30
|
-
|
|
31
|
-
|
|
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.
|
|
37
|
-
expect(created.attempts).toBe(
|
|
38
|
-
expect(created.
|
|
39
|
-
|
|
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.
|
|
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
|
}
|
package/dist/outbox/index.d.ts
DELETED
|
@@ -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"}
|
package/dist/outbox/index.js
DELETED
package/dist/outbox/index.js.map
DELETED
|
@@ -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 +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 +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":"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,GAEb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yDAAyD,CAAC;AACzG,OAAO,EAAE,cAAc,EAAkB,MAAM,2CAA2C,CAAC;AAE3F,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,MAAwB,CAAC;IAE7B,MAAM,MAAM,GAAmB,cAAc,EAAE,CAAC;IAEhD,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,MAAe,EACf,IAAI,8BAA8B,CAChC,cAAc,CAAC,aAAa,CAAC,eAAe,CAA2C,CACxF,CACF,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,cAAc,EAAE,CAAC,CAAC;QAE7C,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,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAChC,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,YAAY,CAAC,UAAU;YAC/B,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC1D,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;SAClD,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,YAAY,EAAE,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|