Skip to content

Commit 1094b57

Browse files
[test] Add tests for --disable-api-nodes release fetch skip functionality (#4799) (#5008)
- Add comprehensive test coverage for the new --disable-api-nodes argument handling - Tests verify release fetching is properly skipped when argument is present - Cover edge cases including multiple args, null argv, and missing system stats - Ensures backward compatibility when argument is not present Co-authored-by: Yoland Yan <[email protected]>
1 parent f5409ea commit 1094b57

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed

src/stores/releaseStore.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,14 @@ export const useReleaseStore = defineStore('release', () => {
226226
return
227227
}
228228

229+
// Skip fetching if API nodes are disabled via argv
230+
if (
231+
systemStatsStore.systemStats?.system?.argv?.includes(
232+
'--disable-api-nodes'
233+
)
234+
) {
235+
return
236+
}
229237
isLoading.value = true
230238
error.value = null
231239

tests-ui/tests/store/releaseStore.test.ts

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,53 @@ describe('useReleaseStore', () => {
251251
})
252252
})
253253

254+
it('should skip fetching when --disable-api-nodes is present', async () => {
255+
mockSystemStatsStore.systemStats.system.argv = ['--disable-api-nodes']
256+
257+
await store.initialize()
258+
259+
expect(mockReleaseService.getReleases).not.toHaveBeenCalled()
260+
expect(store.isLoading).toBe(false)
261+
})
262+
263+
it('should skip fetching when --disable-api-nodes is one of multiple args', async () => {
264+
mockSystemStatsStore.systemStats.system.argv = [
265+
'--port',
266+
'8080',
267+
'--disable-api-nodes',
268+
'--verbose'
269+
]
270+
271+
await store.initialize()
272+
273+
expect(mockReleaseService.getReleases).not.toHaveBeenCalled()
274+
expect(store.isLoading).toBe(false)
275+
})
276+
277+
it('should fetch normally when --disable-api-nodes is not present', async () => {
278+
mockSystemStatsStore.systemStats.system.argv = [
279+
'--port',
280+
'8080',
281+
'--verbose'
282+
]
283+
mockReleaseService.getReleases.mockResolvedValue([mockRelease])
284+
285+
await store.initialize()
286+
287+
expect(mockReleaseService.getReleases).toHaveBeenCalled()
288+
expect(store.releases).toEqual([mockRelease])
289+
})
290+
291+
it('should fetch normally when argv is undefined', async () => {
292+
mockSystemStatsStore.systemStats.system.argv = undefined
293+
mockReleaseService.getReleases.mockResolvedValue([mockRelease])
294+
295+
await store.initialize()
296+
297+
expect(mockReleaseService.getReleases).toHaveBeenCalled()
298+
expect(store.releases).toEqual([mockRelease])
299+
})
300+
254301
it('should handle API errors gracefully', async () => {
255302
mockReleaseService.getReleases.mockResolvedValue(null)
256303
mockReleaseService.error.value = 'API Error'
@@ -307,6 +354,63 @@ describe('useReleaseStore', () => {
307354
})
308355
})
309356

357+
describe('--disable-api-nodes argument handling', () => {
358+
it('should skip fetchReleases when --disable-api-nodes is present', async () => {
359+
mockSystemStatsStore.systemStats.system.argv = ['--disable-api-nodes']
360+
361+
await store.fetchReleases()
362+
363+
expect(mockReleaseService.getReleases).not.toHaveBeenCalled()
364+
expect(store.isLoading).toBe(false)
365+
})
366+
367+
it('should skip fetchReleases when --disable-api-nodes is among other args', async () => {
368+
mockSystemStatsStore.systemStats.system.argv = [
369+
'--port',
370+
'8080',
371+
'--disable-api-nodes',
372+
'--verbose'
373+
]
374+
375+
await store.fetchReleases()
376+
377+
expect(mockReleaseService.getReleases).not.toHaveBeenCalled()
378+
expect(store.isLoading).toBe(false)
379+
})
380+
381+
it('should proceed with fetchReleases when --disable-api-nodes is not present', async () => {
382+
mockSystemStatsStore.systemStats.system.argv = [
383+
'--port',
384+
'8080',
385+
'--verbose'
386+
]
387+
mockReleaseService.getReleases.mockResolvedValue([mockRelease])
388+
389+
await store.fetchReleases()
390+
391+
expect(mockReleaseService.getReleases).toHaveBeenCalled()
392+
})
393+
394+
it('should proceed with fetchReleases when argv is null', async () => {
395+
mockSystemStatsStore.systemStats.system.argv = null
396+
mockReleaseService.getReleases.mockResolvedValue([mockRelease])
397+
398+
await store.fetchReleases()
399+
400+
expect(mockReleaseService.getReleases).toHaveBeenCalled()
401+
})
402+
403+
it('should proceed with fetchReleases when system stats are not available', async () => {
404+
mockSystemStatsStore.systemStats = null
405+
mockReleaseService.getReleases.mockResolvedValue([mockRelease])
406+
407+
await store.fetchReleases()
408+
409+
expect(mockSystemStatsStore.fetchSystemStats).toHaveBeenCalled()
410+
expect(mockReleaseService.getReleases).toHaveBeenCalled()
411+
})
412+
})
413+
310414
describe('action handlers', () => {
311415
beforeEach(() => {
312416
store.releases = [mockRelease]

0 commit comments

Comments
 (0)