summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/commands/memoryCommand.test.ts
diff options
context:
space:
mode:
authorBrandon Keiji <[email protected]>2025-07-23 14:48:35 -0700
committerGitHub <[email protected]>2025-07-23 21:48:35 +0000
commitd7a304bcffc7d2340f3de762f14286596954ce4e (patch)
tree6625f9cf3f3c560a595f2f232292c22499276660 /packages/cli/src/ui/commands/memoryCommand.test.ts
parent9d3164621a8bb0e2bbf8d2309fba1d8678c0abe2 (diff)
feat(memory): make directory search limit on memory discovery configurable with settings.json (#4460)
Diffstat (limited to 'packages/cli/src/ui/commands/memoryCommand.test.ts')
-rw-r--r--packages/cli/src/ui/commands/memoryCommand.test.ts64
1 files changed, 50 insertions, 14 deletions
diff --git a/packages/cli/src/ui/commands/memoryCommand.test.ts b/packages/cli/src/ui/commands/memoryCommand.test.ts
index 47d098b1..74614fa7 100644
--- a/packages/cli/src/ui/commands/memoryCommand.test.ts
+++ b/packages/cli/src/ui/commands/memoryCommand.test.ts
@@ -9,7 +9,12 @@ import { memoryCommand } from './memoryCommand.js';
import { type CommandContext, SlashCommand } from './types.js';
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
import { MessageType } from '../types.js';
-import { getErrorMessage } from '@google/gemini-cli-core';
+import { LoadedSettings } from '../../config/settings.js';
+import {
+ getErrorMessage,
+ loadServerHierarchicalMemory,
+ type FileDiscoveryService,
+} from '@google/gemini-cli-core';
vi.mock('@google/gemini-cli-core', async (importOriginal) => {
const original =
@@ -20,9 +25,12 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
if (error instanceof Error) return error.message;
return String(error);
}),
+ loadServerHierarchicalMemory: vi.fn(),
};
});
+const mockLoadServerHierarchicalMemory = loadServerHierarchicalMemory as Mock;
+
describe('memoryCommand', () => {
let mockContext: CommandContext;
@@ -139,19 +147,37 @@ describe('memoryCommand', () => {
describe('/memory refresh', () => {
let refreshCommand: SlashCommand;
- let mockRefreshMemory: Mock;
+ let mockSetUserMemory: Mock;
+ let mockSetGeminiMdFileCount: Mock;
beforeEach(() => {
refreshCommand = getSubCommand('refresh');
- mockRefreshMemory = vi.fn();
+ mockSetUserMemory = vi.fn();
+ mockSetGeminiMdFileCount = vi.fn();
+ const mockConfig = {
+ setUserMemory: mockSetUserMemory,
+ setGeminiMdFileCount: mockSetGeminiMdFileCount,
+ getWorkingDir: () => '/test/dir',
+ getDebugMode: () => false,
+ getFileService: () => ({}) as FileDiscoveryService,
+ getExtensionContextFilePaths: () => [],
+ getFileFilteringOptions: () => ({
+ ignore: [],
+ include: [],
+ }),
+ };
+
mockContext = createMockCommandContext({
services: {
- config: {
- refreshMemory: mockRefreshMemory,
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- } as any,
+ config: Promise.resolve(mockConfig),
+ settings: {
+ merged: {
+ memoryDiscoveryMaxDirs: 1000,
+ },
+ } as LoadedSettings,
},
});
+ mockLoadServerHierarchicalMemory.mockClear();
});
it('should display success message when memory is refreshed with content', async () => {
@@ -161,7 +187,7 @@ describe('memoryCommand', () => {
memoryContent: 'new memory content',
fileCount: 2,
};
- mockRefreshMemory.mockResolvedValue(refreshResult);
+ mockLoadServerHierarchicalMemory.mockResolvedValue(refreshResult);
await refreshCommand.action(mockContext, '');
@@ -173,7 +199,13 @@ describe('memoryCommand', () => {
expect.any(Number),
);
- expect(mockRefreshMemory).toHaveBeenCalledOnce();
+ expect(loadServerHierarchicalMemory).toHaveBeenCalledOnce();
+ expect(mockSetUserMemory).toHaveBeenCalledWith(
+ refreshResult.memoryContent,
+ );
+ expect(mockSetGeminiMdFileCount).toHaveBeenCalledWith(
+ refreshResult.fileCount,
+ );
expect(mockContext.ui.addItem).toHaveBeenCalledWith(
{
@@ -188,11 +220,13 @@ describe('memoryCommand', () => {
if (!refreshCommand.action) throw new Error('Command has no action');
const refreshResult = { memoryContent: '', fileCount: 0 };
- mockRefreshMemory.mockResolvedValue(refreshResult);
+ mockLoadServerHierarchicalMemory.mockResolvedValue(refreshResult);
await refreshCommand.action(mockContext, '');
- expect(mockRefreshMemory).toHaveBeenCalledOnce();
+ expect(loadServerHierarchicalMemory).toHaveBeenCalledOnce();
+ expect(mockSetUserMemory).toHaveBeenCalledWith('');
+ expect(mockSetGeminiMdFileCount).toHaveBeenCalledWith(0);
expect(mockContext.ui.addItem).toHaveBeenCalledWith(
{
@@ -207,11 +241,13 @@ describe('memoryCommand', () => {
if (!refreshCommand.action) throw new Error('Command has no action');
const error = new Error('Failed to read memory files.');
- mockRefreshMemory.mockRejectedValue(error);
+ mockLoadServerHierarchicalMemory.mockRejectedValue(error);
await refreshCommand.action(mockContext, '');
- expect(mockRefreshMemory).toHaveBeenCalledOnce();
+ expect(loadServerHierarchicalMemory).toHaveBeenCalledOnce();
+ expect(mockSetUserMemory).not.toHaveBeenCalled();
+ expect(mockSetGeminiMdFileCount).not.toHaveBeenCalled();
expect(mockContext.ui.addItem).toHaveBeenCalledWith(
{
@@ -243,7 +279,7 @@ describe('memoryCommand', () => {
expect.any(Number),
);
- expect(mockRefreshMemory).not.toHaveBeenCalled();
+ expect(loadServerHierarchicalMemory).not.toHaveBeenCalled();
});
});
});