File size: 878 Bytes
7a1ad33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import { vi } from 'vitest';
import type {
  ModelAvailabilityService,
  ModelSelectionResult,
} from './modelAvailabilityService.js';

/**
 * Test helper to create a fully mocked ModelAvailabilityService.
 */
export function createAvailabilityServiceMock(
  selection: ModelSelectionResult = { selectedModel: null, skipped: [] },
): ModelAvailabilityService {
  const service = {
    markTerminal: vi.fn(),
    markHealthy: vi.fn(),
    markRetryOncePerTurn: vi.fn(),
    consumeStickyAttempt: vi.fn(),
    snapshot: vi.fn().mockReturnValue({ available: true }),
    resetTurn: vi.fn(),
    selectFirstAvailable: vi.fn().mockReturnValue(selection),
  };

  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
  return service as unknown as ModelAvailabilityService;
}