diff --git a/src/stores/releaseStore.ts b/src/stores/releaseStore.ts index b795fbca18..37faee5a2d 100644 --- a/src/stores/releaseStore.ts +++ b/src/stores/releaseStore.ts @@ -226,6 +226,14 @@ export const useReleaseStore = defineStore('release', () => { return } + // Skip fetching if API nodes are disabled via argv + if ( + systemStatsStore.systemStats?.system?.argv?.includes( + '--disable-api-nodes' + ) + ) { + return + } isLoading.value = true error.value = null diff --git a/tests-ui/tests/store/releaseStore.test.ts b/tests-ui/tests/store/releaseStore.test.ts index 8e49a56af4..730037f038 100644 --- a/tests-ui/tests/store/releaseStore.test.ts +++ b/tests-ui/tests/store/releaseStore.test.ts @@ -251,6 +251,53 @@ describe('useReleaseStore', () => { }) }) + it('should skip fetching when --disable-api-nodes is present', async () => { + mockSystemStatsStore.systemStats.system.argv = ['--disable-api-nodes'] + + await store.initialize() + + expect(mockReleaseService.getReleases).not.toHaveBeenCalled() + expect(store.isLoading).toBe(false) + }) + + it('should skip fetching when --disable-api-nodes is one of multiple args', async () => { + mockSystemStatsStore.systemStats.system.argv = [ + '--port', + '8080', + '--disable-api-nodes', + '--verbose' + ] + + await store.initialize() + + expect(mockReleaseService.getReleases).not.toHaveBeenCalled() + expect(store.isLoading).toBe(false) + }) + + it('should fetch normally when --disable-api-nodes is not present', async () => { + mockSystemStatsStore.systemStats.system.argv = [ + '--port', + '8080', + '--verbose' + ] + mockReleaseService.getReleases.mockResolvedValue([mockRelease]) + + await store.initialize() + + expect(mockReleaseService.getReleases).toHaveBeenCalled() + expect(store.releases).toEqual([mockRelease]) + }) + + it('should fetch normally when argv is undefined', async () => { + mockSystemStatsStore.systemStats.system.argv = undefined + mockReleaseService.getReleases.mockResolvedValue([mockRelease]) + + await store.initialize() + + expect(mockReleaseService.getReleases).toHaveBeenCalled() + expect(store.releases).toEqual([mockRelease]) + }) + it('should handle API errors gracefully', async () => { mockReleaseService.getReleases.mockResolvedValue(null) mockReleaseService.error.value = 'API Error' @@ -307,6 +354,63 @@ describe('useReleaseStore', () => { }) }) + describe('--disable-api-nodes argument handling', () => { + it('should skip fetchReleases when --disable-api-nodes is present', async () => { + mockSystemStatsStore.systemStats.system.argv = ['--disable-api-nodes'] + + await store.fetchReleases() + + expect(mockReleaseService.getReleases).not.toHaveBeenCalled() + expect(store.isLoading).toBe(false) + }) + + it('should skip fetchReleases when --disable-api-nodes is among other args', async () => { + mockSystemStatsStore.systemStats.system.argv = [ + '--port', + '8080', + '--disable-api-nodes', + '--verbose' + ] + + await store.fetchReleases() + + expect(mockReleaseService.getReleases).not.toHaveBeenCalled() + expect(store.isLoading).toBe(false) + }) + + it('should proceed with fetchReleases when --disable-api-nodes is not present', async () => { + mockSystemStatsStore.systemStats.system.argv = [ + '--port', + '8080', + '--verbose' + ] + mockReleaseService.getReleases.mockResolvedValue([mockRelease]) + + await store.fetchReleases() + + expect(mockReleaseService.getReleases).toHaveBeenCalled() + }) + + it('should proceed with fetchReleases when argv is null', async () => { + mockSystemStatsStore.systemStats.system.argv = null + mockReleaseService.getReleases.mockResolvedValue([mockRelease]) + + await store.fetchReleases() + + expect(mockReleaseService.getReleases).toHaveBeenCalled() + }) + + it('should proceed with fetchReleases when system stats are not available', async () => { + mockSystemStatsStore.systemStats = null + mockReleaseService.getReleases.mockResolvedValue([mockRelease]) + + await store.fetchReleases() + + expect(mockSystemStatsStore.fetchSystemStats).toHaveBeenCalled() + expect(mockReleaseService.getReleases).toHaveBeenCalled() + }) + }) + describe('action handlers', () => { beforeEach(() => { store.releases = [mockRelease]