diff --git a/src/tests/views/Validation.spec.ts b/src/tests/views/Validation.spec.ts index 352c1f73a1..c55e2e019d 100644 --- a/src/tests/views/Validation.spec.ts +++ b/src/tests/views/Validation.spec.ts @@ -352,6 +352,69 @@ describe('Validation.vue - Business Logic', () => { }) }) + it('shows info when nobody has signed yet', () => { + expect(wrapper.vm.getDocumentValidationSummary({ + signers: [ + { signed: null }, + { signed: null }, + ], + files: [], + })).toEqual({ + message: 'No digital signatures were found in this document', + type: 'info', + }) + }) + + it('shows info for an envelope where nobody has signed', () => { + expect(wrapper.vm.getDocumentValidationSummary({ + signers: [{ signed: null }], + files: [ + { signers: [{ signed: null }] }, + { signers: [{ signed: null }] }, + ], + })).toEqual({ + message: 'No digital signatures were found in this document', + type: 'info', + }) + }) + + it('evaluates only the signers who have signed', () => { + expect(wrapper.vm.getDocumentValidationSummary({ + signers: [ + { + signed: '2026-10-01T12:00:00+00:00', + signature_validation: { id: 1 }, + document_modification_state: 'unchanged', + }, + { signed: null, modifications: { modified: true } }, + ], + files: [], + })).toEqual({ + message: 'This document is valid', + type: 'success', + }) + }) + + it('treats a signer with a signing date as signed even without cryptographic details', () => { + expect(wrapper.vm.getDocumentValidationSummary({ + signers: [{ signed: '2026-10-01T12:00:00+00:00' }], + files: [], + })).toEqual({ + message: 'This document is valid', + type: 'success', + }) + }) + + it('treats a signer with the signed status as signed even without a signing date', () => { + expect(wrapper.vm.getDocumentValidationSummary({ + signers: [{ status: 2 }], + files: [], + })).toEqual({ + message: 'This document is valid', + type: 'success', + }) + }) + it('shows warning when the document was modified after signing', () => { expect(wrapper.vm.getDocumentValidationSummary({ signers: [{ diff --git a/src/views/Validation.vue b/src/views/Validation.vue index b95bcc989d..d5699e5a0a 100644 --- a/src/views/Validation.vue +++ b/src/views/Validation.vue @@ -796,8 +796,14 @@ function getValidationDocumentSigners(validationDocument: ValidationDocumentStat return signers } +function hasAppliedSignature(signer: ValidationDisplaySigner) { + return Boolean(signer.signed) + || Number(signer.status) === SIGN_REQUEST_STATUS.SIGNED + || signer.signature_validation !== undefined +} + function getDocumentValidationSummary(validationDocument: ValidationDocumentState): DocumentValidationSummary { - const signers = getValidationDocumentSigners(validationDocument) + const signers = getValidationDocumentSigners(validationDocument).filter(hasAppliedSignature) if (signers.length === 0) { return {