mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-20 16:57:46 +00:00
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { vi, describe, it, expect } from 'vitest';
|
|
import { createMockCommandContext } from './mockCommandContext.js';
|
|
|
|
describe('createMockCommandContext', () => {
|
|
it('should return a valid CommandContext object with default mocks', () => {
|
|
const context = createMockCommandContext();
|
|
|
|
// Just a few spot checks to ensure the structure is correct
|
|
// and functions are mocks.
|
|
expect(context).toBeDefined();
|
|
expect(context.ui.addItem).toBeInstanceOf(Function);
|
|
expect(vi.isMockFunction(context.ui.addItem)).toBe(true);
|
|
});
|
|
|
|
it('should apply top-level overrides correctly', () => {
|
|
const mockClear = vi.fn();
|
|
const overrides = {
|
|
ui: {
|
|
clear: mockClear,
|
|
},
|
|
};
|
|
|
|
const context = createMockCommandContext(overrides);
|
|
|
|
// Call the function to see if the override was used
|
|
context.ui.clear();
|
|
|
|
// Assert that our specific mock was called, not the default
|
|
expect(mockClear).toHaveBeenCalled();
|
|
// And that other defaults are still in place
|
|
expect(vi.isMockFunction(context.ui.addItem)).toBe(true);
|
|
});
|
|
|
|
it('should apply deeply nested overrides correctly', () => {
|
|
// This is the most important test for factory's logic.
|
|
const mockConfig = {
|
|
getProjectRoot: () => '/test/project',
|
|
getModel: () => 'gemini-pro',
|
|
};
|
|
|
|
const overrides = {
|
|
services: {
|
|
config: mockConfig,
|
|
},
|
|
};
|
|
|
|
const context = createMockCommandContext(overrides);
|
|
|
|
expect(context.services.config).toBeDefined();
|
|
expect(context.services.config?.getModel()).toBe('gemini-pro');
|
|
expect(context.services.config?.getProjectRoot()).toBe('/test/project');
|
|
|
|
// Verify a default property on the same nested object is still there
|
|
expect(context.services.logger).toBeDefined();
|
|
});
|
|
});
|