Skip to content

Commit 07c5d3d

Browse files
committed
test: cover request signing progress OpenAPI payload
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent 0fe9877 commit 07c5d3d

1 file changed

Lines changed: 53 additions & 2 deletions

File tree

src/tests/components/RequestSigningProgress.spec.ts

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55

66
import { describe, expect, it, vi } from 'vitest'
77
import { shallowMount } from '@vue/test-utils'
8+
import type { components } from '../../types/openapi/openapi'
89
import RequestSigningProgress from '../../components/RequestSigningProgress.vue'
910

1011
vi.mock('../../utils/fileStatus.js', () => ({
1112
getStatusIcon: vi.fn(),
1213
}))
1314

15+
type SigningProgress = components['schemas']['ProgressPayload']
16+
1417
describe('RequestSigningProgress business rules', () => {
1518
it('detects in-progress status only for status 5', async () => {
1619
const wrapper = shallowMount(RequestSigningProgress, {
@@ -59,7 +62,7 @@ describe('RequestSigningProgress business rules', () => {
5962

6063
expect(wrapper.vm.progressPercentage).toBe(0)
6164

62-
await wrapper.setProps({ progress: { total: 0, signed: 0 } })
65+
await wrapper.setProps({ progress: { total: 0, signed: 0, inProgress: 0, pending: 0 } })
6366
await wrapper.vm.$nextTick()
6467
expect(wrapper.vm.progressPercentage).toBe(0)
6568
})
@@ -68,12 +71,60 @@ describe('RequestSigningProgress business rules', () => {
6871
const wrapper = shallowMount(RequestSigningProgress, {
6972
props: {
7073
status: 5,
71-
progress: { total: 3, signed: 2 },
74+
progress: { total: 3, signed: 2, inProgress: 1, pending: 0 },
7275
},
7376
global: { stubs: { NcIconSvgWrapper: true } },
7477
})
7578
await wrapper.vm.$nextTick()
7679

7780
expect(wrapper.vm.progressPercentage).toBe(67)
7881
})
82+
83+
it('treats OpenAPI signer records as signed only when timestamp exists', async () => {
84+
const progress: SigningProgress = {
85+
total: 2,
86+
signed: 1,
87+
inProgress: 0,
88+
pending: 1,
89+
signers: [
90+
{ id: 1, displayName: 'Alice', signed: '2026-03-15T10:00:00Z', status: 3 },
91+
{ id: 2, displayName: 'Bob', signed: null, status: 1 },
92+
],
93+
}
94+
const wrapper = shallowMount(RequestSigningProgress, {
95+
props: {
96+
status: 5,
97+
progress,
98+
},
99+
global: { stubs: { NcIconSvgWrapper: true } },
100+
})
101+
await wrapper.vm.$nextTick()
102+
103+
expect(wrapper.vm.isProgressSignerSigned(progress.signers![0])).toBe(true)
104+
expect(wrapper.vm.isProgressSignerSigned(progress.signers![1])).toBe(false)
105+
})
106+
107+
it('uses OpenAPI progress files with numeric ids and status text', async () => {
108+
const progress: SigningProgress = {
109+
total: 1,
110+
signed: 0,
111+
inProgress: 1,
112+
pending: 0,
113+
files: [
114+
{ id: 99, name: 'contract.pdf', status: 5, statusText: 'Signing in progress' },
115+
],
116+
}
117+
const wrapper = shallowMount(RequestSigningProgress, {
118+
props: {
119+
status: 5,
120+
progress,
121+
},
122+
global: { stubs: { NcIconSvgWrapper: true } },
123+
})
124+
await wrapper.vm.$nextTick()
125+
126+
expect(wrapper.find('.signing-progress__file-name').text()).toBe('contract.pdf')
127+
expect(wrapper.find('.signing-progress__file-progress').text()).toBe('Signing in progress')
128+
expect(wrapper.vm.isProgressFileSigned(progress.files![0])).toBe(false)
129+
})
79130
})

0 commit comments

Comments
 (0)