Skip to content

Commit 7107d98

Browse files
fix(vue3): resolve Validation dynamic component render
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent ac65aa6 commit 7107d98

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

src/tests/views/Validation.spec.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import Validation from '../../views/Validation.vue'
1313
// Mock async components to prevent defineAsyncComponent from triggering
1414
// pending Vite dev-server fetches that outlive the worker and cause
1515
// "Closing rpc while fetch was pending" errors in Vitest.
16-
vi.mock('../../components/validation/EnvelopeValidation.vue', () => ({ default: { template: '<div />' } }))
17-
vi.mock('../../components/validation/FileValidation.vue', () => ({ default: { template: '<div />' } }))
16+
vi.mock('../../components/validation/EnvelopeValidation.vue', () => ({ default: { template: '<div data-test="envelope-validation" />' } }))
17+
vi.mock('../../components/validation/FileValidation.vue', () => ({ default: { template: '<div data-test="file-validation" />' } }))
1818
vi.mock('../../components/validation/SigningProgress.vue', () => ({ default: { template: '<div />' } }))
1919

2020
// Mock js-confetti
@@ -282,6 +282,20 @@ describe('Validation.vue - Business Logic', () => {
282282

283283
expect(wrapper.html()).not.toContain('[object Promise]')
284284
})
285+
286+
it('uses component references instead of string names for validation content', async () => {
287+
wrapper.vm.document = { uuid: 'doc-uuid', nodeType: 'file', name: 'contract.pdf' }
288+
await wrapper.vm.$nextTick()
289+
290+
expect(typeof wrapper.vm.validationComponent).toBe('object')
291+
expect(wrapper.vm.validationComponent).not.toBe('FileValidation')
292+
293+
wrapper.vm.document = { uuid: 'doc-uuid', nodeType: 'envelope', name: 'envelope', files: [{ id: 1 }] }
294+
await wrapper.vm.$nextTick()
295+
296+
expect(typeof wrapper.vm.validationComponent).toBe('object')
297+
expect(wrapper.vm.validationComponent).not.toBe('EnvelopeValidation')
298+
})
285299
})
286300

287301
describe('getValidityStatus method', () => {

src/views/Validation.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
</div>
6464
</div>
6565
<div v-else class="infor-container">
66-
<component :is="isEnvelope ? 'EnvelopeValidation' : 'FileValidation'"
66+
<component :is="validationComponent"
6767
:document="document"
6868
:legal-information="legalInformation"
6969
:document-valid-message="documentValidMessage"
@@ -176,6 +176,8 @@ const isAfterSigned = computed(() => history.state?.isAfterSigned ?? shouldFireA
176176
const isEnvelope = computed(() => document.value?.nodeType === 'envelope'
177177
|| (Array.isArray(document.value?.files) && document.value.files.length > 0))
178178
179+
const validationComponent = computed(() => (isEnvelope.value ? EnvelopeValidation : FileValidation))
180+
179181
const canValidate = computed(() => {
180182
if (!uuidToValidate.value) {
181183
return false
@@ -716,6 +718,7 @@ defineExpose({
716718
signRequestUuidForProgress,
717719
isAfterSigned,
718720
isEnvelope,
721+
validationComponent,
719722
canValidate,
720723
helperTextValidation,
721724
size,

0 commit comments

Comments
 (0)