diff --git a/api/src/legal-documents/domain/usecases/accept-legal-document-by-user-id.usecase.js b/api/src/legal-documents/domain/usecases/accept-legal-document-by-user-id.usecase.js index 84fbfd37207..525c95a57c0 100644 --- a/api/src/legal-documents/domain/usecases/accept-legal-document-by-user-id.usecase.js +++ b/api/src/legal-documents/domain/usecases/accept-legal-document-by-user-id.usecase.js @@ -1,3 +1,4 @@ +import { withTransaction } from '../../../shared/domain/DomainTransaction.js'; import { LegalDocumentService } from '../models/LegalDocumentService.js'; import { LegalDocumentType } from '../models/LegalDocumentType.js'; @@ -13,31 +14,25 @@ const { TOS } = LegalDocumentType.VALUES; * @param {string} params.type - The type of the legal document. * @returns {Promise} A promise that resolves when the operation is complete. */ -const acceptLegalDocumentByUserId = async ({ - userId, - service, - type, - userRepository, - legalDocumentRepository, - userAcceptanceRepository, - logger, -}) => { - LegalDocumentType.assert(type); - LegalDocumentService.assert(service); +const acceptLegalDocumentByUserId = withTransaction( + async ({ userId, service, type, userRepository, legalDocumentRepository, userAcceptanceRepository, logger }) => { + LegalDocumentType.assert(type); + LegalDocumentService.assert(service); - // legacy document acceptance - if (type === TOS && service === PIX_ORGA) { - await userRepository.setPixOrgaCguByUserId(userId); - } + // legacy document acceptance + if (type === TOS && service === PIX_ORGA) { + await userRepository.setPixOrgaCguByUserId(userId); + } - // new document acceptance - const legalDocument = await legalDocumentRepository.findLastVersionByTypeAndService({ service, type }); - if (!legalDocument) { - logger.warn(`No legal document found for service: ${service} and type: ${type}`); - return; - } + // new document acceptance + const legalDocument = await legalDocumentRepository.findLastVersionByTypeAndService({ service, type }); + if (!legalDocument) { + logger.warn(`No legal document found for service: ${service} and type: ${type}`); + return; + } - await userAcceptanceRepository.create({ userId, legalDocumentVersionId: legalDocument.id }); -}; + await userAcceptanceRepository.create({ userId, legalDocumentVersionId: legalDocument.id }); + }, +); export { acceptLegalDocumentByUserId }; diff --git a/api/src/legal-documents/domain/usecases/create-legal-document.usecase.js b/api/src/legal-documents/domain/usecases/create-legal-document.usecase.js index 0ddd01e2a9b..54bbe8f5662 100644 --- a/api/src/legal-documents/domain/usecases/create-legal-document.usecase.js +++ b/api/src/legal-documents/domain/usecases/create-legal-document.usecase.js @@ -1,3 +1,4 @@ +import { withTransaction } from '../../../shared/domain/DomainTransaction.js'; import { LegalDocumentInvalidDateError } from '../errors.js'; import { LegalDocumentService } from '../models/LegalDocumentService.js'; import { LegalDocumentType } from '../models/LegalDocumentType.js'; @@ -11,7 +12,7 @@ import { LegalDocumentType } from '../models/LegalDocumentType.js'; * @param {string} params.versionAt - Version date of the new legal document. * @returns {Promise} A promise that resolves the new legal document. */ -const createLegalDocument = async ({ service, type, versionAt, legalDocumentRepository }) => { +const createLegalDocument = withTransaction(async ({ service, type, versionAt, legalDocumentRepository }) => { LegalDocumentService.assert(service); LegalDocumentType.assert(type); @@ -22,6 +23,6 @@ const createLegalDocument = async ({ service, type, versionAt, legalDocumentRepo } return legalDocumentRepository.create({ service, type, versionAt }); -}; +}); export { createLegalDocument }; diff --git a/api/tests/legal-documents/unit/domain/usecase/accept-legal-document-by-user-id.usecase.test.js b/api/tests/legal-documents/unit/domain/usecase/accept-legal-document-by-user-id.usecase.test.js index 63c5959d38d..942c032cdea 100644 --- a/api/tests/legal-documents/unit/domain/usecase/accept-legal-document-by-user-id.usecase.test.js +++ b/api/tests/legal-documents/unit/domain/usecase/accept-legal-document-by-user-id.usecase.test.js @@ -3,12 +3,20 @@ import Joi from 'joi'; import { LegalDocumentService } from '../../../../../src/legal-documents/domain/models/LegalDocumentService.js'; import { LegalDocumentType } from '../../../../../src/legal-documents/domain/models/LegalDocumentType.js'; import { usecases } from '../../../../../src/legal-documents/domain/usecases/index.js'; -import { expect } from '../../../../test-helper.js'; +import { DomainTransaction } from '../../../../../src/shared/domain/DomainTransaction.js'; +import { expect, sinon } from '../../../../test-helper.js'; const { PIX_ORGA } = LegalDocumentService.VALUES; const { TOS } = LegalDocumentType.VALUES; describe('Unit | Legal documents | Domain | Use case | accept-legal-document-by-user-id', function () { + beforeEach(function () { + sinon.stub(DomainTransaction, 'execute'); + DomainTransaction.execute.callsFake((fn) => { + return fn({}); + }); + }); + context('when the legal document type is invalid', function () { it('throws an error', async function () { // given diff --git a/api/tests/legal-documents/unit/domain/usecase/create-legal-document.usecase.test.js b/api/tests/legal-documents/unit/domain/usecase/create-legal-document.usecase.test.js index 40eb6ff9a90..a58b200fb04 100644 --- a/api/tests/legal-documents/unit/domain/usecase/create-legal-document.usecase.test.js +++ b/api/tests/legal-documents/unit/domain/usecase/create-legal-document.usecase.test.js @@ -3,12 +3,20 @@ import Joi from 'joi'; import { LegalDocumentService } from '../../../../../src/legal-documents/domain/models/LegalDocumentService.js'; import { LegalDocumentType } from '../../../../../src/legal-documents/domain/models/LegalDocumentType.js'; import { usecases } from '../../../../../src/legal-documents/domain/usecases/index.js'; -import { expect } from '../../../../test-helper.js'; +import { DomainTransaction } from '../../../../../src/shared/domain/DomainTransaction.js'; +import { expect, sinon } from '../../../../test-helper.js'; const { PIX_ORGA } = LegalDocumentService.VALUES; const { TOS } = LegalDocumentType.VALUES; describe('Unit | Legal documents | Domain | Use case | create-legal-document', function () { + beforeEach(function () { + sinon.stub(DomainTransaction, 'execute'); + DomainTransaction.execute.callsFake((fn) => { + return fn({}); + }); + }); + context('when the legal document type is invalid', function () { it('throws an error', async function () { // given