/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import { Config, type ConfigParameters } from '../config/config.js';

/**
 * Default parameters used for {@link FAKE_CONFIG}
 */
export const DEFAULT_CONFIG_PARAMETERS: ConfigParameters = {
  usageStatisticsEnabled: true,
  debugMode: false,
  sessionId: 'test-session-id',
  proxy: undefined,
  model: 'gemini-9001-super-duper',
  targetDir: '/',
  cwd: '/',
};

/**
 * Produces a config.  Default parameters are set to
 * {@link DEFAULT_CONFIG_PARAMETERS}, optionally, fields can be specified to
 * override those defaults.
 */
export function makeFakeConfig(
  config: Partial<ConfigParameters> = {
    ...DEFAULT_CONFIG_PARAMETERS,
  },
): Config {
  const cfg = new Config({
    ...DEFAULT_CONFIG_PARAMETERS,
    ...config,
  });
  Object.defineProperty(cfg.storage, 'projectIdentifier', {
    get: () => 'test-project-id',
    configurable: true,
  });
  Object.defineProperty(cfg.storage, 'getPlansDir', {
    value: () => '/mocked/plans/dir',
    configurable: true,
  });
  return cfg;
}
