mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-21 01:07:46 +00:00
feature(commands) - Refactor Slash Command + Vision For the Future (#3175)
This commit is contained in:
62
packages/cli/src/test-utils/mockCommandContext.test.ts
Normal file
62
packages/cli/src/test-utils/mockCommandContext.test.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* @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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user