mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-07 11:51:14 -07:00
158 lines
4.8 KiB
TypeScript
158 lines
4.8 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2026 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { describe, it, expect } from 'vitest';
|
|
import {
|
|
deriveItemsFromLegacySettings,
|
|
resolveFooterState,
|
|
} from './footerItems.js';
|
|
import { createMockSettings } from '../test-utils/settings.js';
|
|
|
|
describe('footerItems', () => {
|
|
describe('deriveItemsFromLegacySettings', () => {
|
|
it('returns defaults when no legacy settings are customized', () => {
|
|
const settings = createMockSettings({
|
|
ui: { footer: { hideContextPercentage: true } },
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).toEqual([
|
|
'workspace',
|
|
'git-branch',
|
|
'sandbox',
|
|
'model-name',
|
|
'quota',
|
|
]);
|
|
});
|
|
|
|
it('removes workspace when hideCWD is true', () => {
|
|
const settings = createMockSettings({
|
|
ui: { footer: { hideCWD: true, hideContextPercentage: true } },
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).not.toContain('workspace');
|
|
});
|
|
|
|
it('removes sandbox when hideSandboxStatus is true', () => {
|
|
const settings = createMockSettings({
|
|
ui: {
|
|
footer: { hideSandboxStatus: true, hideContextPercentage: true },
|
|
},
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).not.toContain('sandbox');
|
|
});
|
|
|
|
it('removes model-name, context-used, and quota when hideModelInfo is true', () => {
|
|
const settings = createMockSettings({
|
|
ui: { footer: { hideModelInfo: true, hideContextPercentage: true } },
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).not.toContain('model-name');
|
|
expect(items).not.toContain('context-used');
|
|
expect(items).not.toContain('quota');
|
|
});
|
|
|
|
it('includes context-used when hideContextPercentage is false', () => {
|
|
const settings = createMockSettings({
|
|
ui: { footer: { hideContextPercentage: false } },
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).toContain('context-used');
|
|
// Should be after model-name
|
|
const modelIdx = items.indexOf('model-name');
|
|
const contextIdx = items.indexOf('context-used');
|
|
expect(contextIdx).toBe(modelIdx + 1);
|
|
});
|
|
|
|
it('includes memory-usage when showMemoryUsage is true', () => {
|
|
const settings = createMockSettings({
|
|
ui: { showMemoryUsage: true, footer: { hideContextPercentage: true } },
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).toContain('memory-usage');
|
|
});
|
|
|
|
it('handles combination of settings', () => {
|
|
const settings = createMockSettings({
|
|
ui: {
|
|
showMemoryUsage: true,
|
|
footer: {
|
|
hideCWD: true,
|
|
hideModelInfo: true,
|
|
hideContextPercentage: false,
|
|
},
|
|
},
|
|
}).merged;
|
|
const items = deriveItemsFromLegacySettings(settings);
|
|
expect(items).toEqual([
|
|
'git-branch',
|
|
'sandbox',
|
|
'context-used',
|
|
'memory-usage',
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('resolveFooterState', () => {
|
|
it('filters out auth item when showUserIdentity is false', () => {
|
|
const settings = createMockSettings({
|
|
ui: {
|
|
showUserIdentity: false,
|
|
footer: {
|
|
items: ['workspace', 'auth', 'model-name'],
|
|
},
|
|
},
|
|
}).merged;
|
|
|
|
const state = resolveFooterState(settings);
|
|
expect(state.orderedIds).not.toContain('auth');
|
|
expect(state.selectedIds.has('auth')).toBe(false);
|
|
// It should also not be in the 'others' part of orderedIds
|
|
expect(state.orderedIds).toEqual([
|
|
'workspace',
|
|
'model-name',
|
|
'git-branch',
|
|
'sandbox',
|
|
'context-used',
|
|
'quota',
|
|
'memory-usage',
|
|
'session-id',
|
|
'code-changes',
|
|
'token-count',
|
|
]);
|
|
});
|
|
|
|
it('includes auth item when showUserIdentity is true', () => {
|
|
const settings = createMockSettings({
|
|
ui: {
|
|
showUserIdentity: true,
|
|
footer: {
|
|
items: ['workspace', 'auth', 'model-name'],
|
|
},
|
|
},
|
|
}).merged;
|
|
|
|
const state = resolveFooterState(settings);
|
|
expect(state.orderedIds).toContain('auth');
|
|
expect(state.selectedIds.has('auth')).toBe(true);
|
|
});
|
|
|
|
it('includes auth item by default when showUserIdentity is undefined (defaults to true)', () => {
|
|
const settings = createMockSettings({
|
|
ui: {
|
|
footer: {
|
|
items: ['workspace', 'auth', 'model-name'],
|
|
},
|
|
},
|
|
}).merged;
|
|
|
|
const state = resolveFooterState(settings);
|
|
expect(state.orderedIds).toContain('auth');
|
|
expect(state.selectedIds.has('auth')).toBe(true);
|
|
});
|
|
});
|
|
});
|