Skip to content

Commit cc724b9

Browse files
authored
feat(api): wrap usecase with withTransaction
for terminate passage
1 parent 11cc8ec commit cc724b9

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

api/src/devcomp/domain/usecases/terminate-passage.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1+
import { withTransaction } from '../../../shared/domain/DomainTransaction.js';
12
import { NotFoundError } from '../../../shared/domain/errors.js';
23
import { PassageDoesNotExistError, PassageTerminatedError } from '../errors.js';
34
import { PassageTerminatedEvent } from '../models/passage-events/passage-events.js';
45

5-
async function terminatePassage({ passageId, requestTimestamp, passageRepository, passageEventRepository }) {
6+
const terminatePassage = withTransaction(async function ({
7+
passageId,
8+
requestTimestamp,
9+
passageRepository,
10+
passageEventRepository,
11+
}) {
612
const passage = await _getPassage({ passageId, passageRepository });
713
if (passage.terminatedAt) {
814
throw new PassageTerminatedError();
@@ -15,7 +21,7 @@ async function terminatePassage({ passageId, requestTimestamp, passageRepository
1521
});
1622
await passageEventRepository.record(event);
1723
return terminatedPassage;
18-
}
24+
});
1925

2026
async function _getPassage({ passageId, passageRepository }) {
2127
try {

api/tests/devcomp/unit/domain/usecases/terminate-passage_test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { PassageDoesNotExistError, PassageTerminatedError } from '../../../../../src/devcomp/domain/errors.js';
22
import { PassageTerminatedEvent } from '../../../../../src/devcomp/domain/models/passage-events/passage-events.js';
33
import { terminatePassage } from '../../../../../src/devcomp/domain/usecases/terminate-passage.js';
4+
import { DomainTransaction } from '../../../../../src/shared/domain/DomainTransaction.js';
45
import { NotFoundError } from '../../../../../src/shared/domain/errors.js';
56
import { catchErr, expect, sinon } from '../../../../test-helper.js';
67

78
describe('Unit | Devcomp | Domain | UseCases | terminate-passage', function () {
9+
beforeEach(function () {
10+
sinon.stub(DomainTransaction, 'execute').callsFake((lambda) => lambda());
11+
});
12+
813
describe('#terminatePassage', function () {
914
describe('when passage is not found', function () {
1015
it('should throw a PassageDoesNotExistError', async function () {

0 commit comments

Comments
 (0)