Skip to content

Commit 347139f

Browse files
committed
fix: align feed conversion contract tests with async preview and retry rules
1 parent 1d47f80 commit 347139f

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

frontend/src/__tests__/useFeedConversion.contract.test.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, it, expect } from 'vitest';
2-
import { renderHook, act } from '@testing-library/preact';
2+
import { renderHook, act, waitFor } from '@testing-library/preact';
33
import { http, HttpResponse } from 'msw';
44
import { server, buildFeedResponse } from './mocks/server';
55
import { useFeedConversion } from '../hooks/useFeedConversion';
@@ -52,9 +52,11 @@ describe('useFeedConversion contract', () => {
5252
expect(result.current.result?.feed.feed_token).toBe('generated-token');
5353
expect(result.current.result?.feed.public_url).toBe('/api/v1/feeds/generated-token');
5454
expect(result.current.result?.feed.json_public_url).toBe('/api/v1/feeds/generated-token.json');
55-
expect(result.current.result?.preview.error).toBeNull();
56-
expect(result.current.result?.preview.isLoading).toBe(false);
57-
expect(result.current.result?.preview.items).toHaveLength(1);
55+
await waitFor(() => {
56+
expect(result.current.result?.preview.error).toBeNull();
57+
expect(result.current.result?.preview.isLoading).toBe(false);
58+
expect(result.current.result?.preview.items).toHaveLength(1);
59+
});
5860
});
5961

6062
it('propagates API validation errors', async () => {
@@ -124,8 +126,10 @@ describe('useFeedConversion contract', () => {
124126

125127
expect(result.current.error).toBeNull();
126128
expect(result.current.result?.feed.feed_token).toBe('generated-token');
127-
expect(result.current.result?.preview.items).toEqual([]);
128-
expect(result.current.result?.preview.error).toBe('Preview unavailable right now.');
129-
expect(result.current.result?.preview.isLoading).toBe(false);
129+
await waitFor(() => {
130+
expect(result.current.result?.preview.items).toEqual([]);
131+
expect(result.current.result?.preview.error).toBe('Preview unavailable right now.');
132+
expect(result.current.result?.preview.isLoading).toBe(false);
133+
});
130134
});
131135
});

frontend/src/hooks/useFeedConversion.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ function shouldAutoRetry(
251251
normalized.includes('forbidden') ||
252252
normalized.includes('access token') ||
253253
normalized.includes('authentication') ||
254+
normalized.includes('invalid response format') ||
254255
normalized.includes('network error') ||
255256
normalized.includes('url') ||
256257
normalized.includes('unsupported strategy')

0 commit comments

Comments
 (0)