mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-17 23:35:54 +01:00
Merge pull request #300844 from mjbvz/dev/mjbvz/historical-gecko
Add StaticChatSessionItemController helper for test
This commit is contained in:
@@ -24,6 +24,20 @@ import { TestInstantiationService } from '../../../../../../platform/instantiati
|
||||
import { IStorageService, StorageScope, StorageTarget } from '../../../../../../platform/storage/common/storage.js';
|
||||
import { AgentSessionProviders, getAgentCanContinueIn, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../../../browser/agentSessions/agentSessions.js';
|
||||
|
||||
class StaticChatSessionItemController implements IChatSessionItemController {
|
||||
readonly onDidChangeChatSessionItems = Event.None;
|
||||
|
||||
constructor(
|
||||
private readonly sessionItems: readonly IChatSessionItem[],
|
||||
) { }
|
||||
|
||||
get items(): readonly IChatSessionItem[] {
|
||||
return this.sessionItems;
|
||||
}
|
||||
|
||||
async refresh(): Promise<void> { }
|
||||
}
|
||||
|
||||
|
||||
suite('AgentSessions', () => {
|
||||
|
||||
@@ -64,20 +78,14 @@ suite('AgentSessions', () => {
|
||||
test('should resolve sessions from controllers', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const chatSessionType = 'test-type';
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [
|
||||
makeSimpleSessionItem('session-1', {
|
||||
label: 'Test Session 1'
|
||||
}),
|
||||
makeSimpleSessionItem('session-2', {
|
||||
label: 'Test Session 2'
|
||||
})
|
||||
];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([
|
||||
makeSimpleSessionItem('session-1', {
|
||||
label: 'Test Session 1'
|
||||
}),
|
||||
makeSimpleSessionItem('session-2', {
|
||||
label: 'Test Session 2'
|
||||
})
|
||||
]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(chatSessionType, controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -94,21 +102,9 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should resolve sessions from multiple controllers', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller1: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller1 = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
const controller2: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-2')];
|
||||
}
|
||||
};
|
||||
const controller2 = new StaticChatSessionItemController([makeSimpleSessionItem('session-2')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('type-1', controller1);
|
||||
mockChatSessionsService.registerChatSessionItemController('type-2', controller2);
|
||||
@@ -125,11 +121,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should fire onWillResolve and onDidResolve events', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() { return []; }
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -156,13 +148,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should fire onDidChangeSessions event after resolving', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -183,22 +169,16 @@ suite('AgentSessions', () => {
|
||||
const created = Date.now();
|
||||
const lastRequestEnded = created + 1000;
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
description: new MarkdownString('**Bold** description'),
|
||||
status: ChatSessionStatus.Completed,
|
||||
tooltip: 'Session tooltip',
|
||||
iconPath: ThemeIcon.fromId('check'),
|
||||
timing: { created, lastRequestStarted: created, lastRequestEnded },
|
||||
changes: { files: 1, insertions: 10, deletions: 5 }
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
description: new MarkdownString('**Bold** description'),
|
||||
status: ChatSessionStatus.Completed,
|
||||
tooltip: 'Session tooltip',
|
||||
iconPath: ThemeIcon.fromId('check'),
|
||||
timing: { created, lastRequestStarted: created, lastRequestEnded },
|
||||
changes: { files: 1, insertions: 10, deletions: 5 }
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -222,21 +202,9 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should handle resolve with specific provider', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller1: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller1 = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
const controller2: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-2')];
|
||||
}
|
||||
};
|
||||
const controller2 = new StaticChatSessionItemController([makeSimpleSessionItem('session-2')]);
|
||||
|
||||
disposables.add(mockChatSessionsService.registerChatSessionItemController('type-1', controller1));
|
||||
disposables.add(mockChatSessionsService.registerChatSessionItemController('type-2', controller2));
|
||||
@@ -256,21 +224,9 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should handle resolve with multiple specific controllers', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller1: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller1 = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
const controller2: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-2')];
|
||||
}
|
||||
};
|
||||
const controller2 = new StaticChatSessionItemController([makeSimpleSessionItem('session-2')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('type-1', controller1);
|
||||
mockChatSessionsService.registerChatSessionItemController('type-2', controller2);
|
||||
@@ -286,13 +242,7 @@ suite('AgentSessions', () => {
|
||||
test('should respond to onDidChangeItemsProviders event', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const chatSessionType = 'test-type';
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(chatSessionType, controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -311,13 +261,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should respond to onDidChangeAvailability event', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -336,13 +280,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should respond to onDidChangeSessionItems event', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -361,13 +299,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should maintain provider reference in session view model', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -381,11 +313,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should handle empty provider results', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() { return []; }
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -398,35 +326,26 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should handle sessions with different statuses', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [
|
||||
{
|
||||
id: 'session-failed',
|
||||
resource: URI.parse('test://session-failed'),
|
||||
label: 'Failed Session',
|
||||
status: ChatSessionStatus.Failed,
|
||||
timing: makeNewSessionTiming()
|
||||
},
|
||||
{
|
||||
id: 'session-completed',
|
||||
resource: URI.parse('test://session-completed'),
|
||||
label: 'Completed Session',
|
||||
status: ChatSessionStatus.Completed,
|
||||
timing: makeNewSessionTiming()
|
||||
},
|
||||
{
|
||||
id: 'session-inprogress',
|
||||
resource: URI.parse('test://session-inprogress'),
|
||||
label: 'In Progress Session',
|
||||
status: ChatSessionStatus.InProgress,
|
||||
timing: makeNewSessionTiming()
|
||||
}
|
||||
];
|
||||
const controller = new StaticChatSessionItemController([
|
||||
{
|
||||
resource: URI.parse('test://session-failed'),
|
||||
label: 'Failed Session',
|
||||
status: ChatSessionStatus.Failed,
|
||||
timing: makeNewSessionTiming()
|
||||
},
|
||||
{
|
||||
resource: URI.parse('test://session-completed'),
|
||||
label: 'Completed Session',
|
||||
status: ChatSessionStatus.Completed,
|
||||
timing: makeNewSessionTiming()
|
||||
},
|
||||
{
|
||||
resource: URI.parse('test://session-inprogress'),
|
||||
label: 'In Progress Session',
|
||||
status: ChatSessionStatus.InProgress,
|
||||
timing: makeNewSessionTiming()
|
||||
}
|
||||
};
|
||||
]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -470,18 +389,11 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should handle local agent session type specially', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
id: 'local-session',
|
||||
resource: LocalChatSessionUri.forSession('local-session'),
|
||||
label: 'Local Session',
|
||||
timing: makeNewSessionTiming()
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: LocalChatSessionUri.forSession('local-session'),
|
||||
label: 'Local Session',
|
||||
timing: makeNewSessionTiming()
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(localChatSessionType, controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -497,17 +409,11 @@ suite('AgentSessions', () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const resource = URI.parse('custom://my-session/path');
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: resource,
|
||||
label: 'Test Session',
|
||||
timing: makeNewSessionTiming()
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: resource,
|
||||
label: 'Test Session',
|
||||
timing: makeNewSessionTiming()
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = createViewModel();
|
||||
@@ -1046,11 +952,7 @@ suite('AgentSessions', () => {
|
||||
});
|
||||
|
||||
test('should register provider filter actions', () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() { return []; }
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('custom-type-1', controller);
|
||||
|
||||
@@ -1071,11 +973,7 @@ suite('AgentSessions', () => {
|
||||
));
|
||||
|
||||
const chatSessionType = 'new-type';
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() { return []; }
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([]);
|
||||
|
||||
// Register provider after filter creation
|
||||
mockChatSessionsService.registerChatSessionItemController(chatSessionType, controller);
|
||||
@@ -1314,13 +1212,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should archive and unarchive sessions', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1342,13 +1234,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should fire onDidChangeSessions when archiving', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1368,13 +1254,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should not fire onDidChangeSessions when archiving with same value', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1397,18 +1277,12 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should preserve archived state from provider', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
archived: true,
|
||||
timing: makeNewSessionTiming()
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
archived: true,
|
||||
timing: makeNewSessionTiming()
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1422,18 +1296,12 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should override provider archived state with user preference', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
archived: true,
|
||||
timing: makeNewSessionTiming()
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
archived: true,
|
||||
timing: makeNewSessionTiming()
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1484,17 +1352,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Session 1',
|
||||
timing: futureSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Session 1',
|
||||
timing: futureSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1515,13 +1377,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should fire onDidChangeSessions when marking as read', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1543,13 +1399,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should not fire onDidChangeSessions when marking as read with same value', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1572,13 +1422,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should preserve read state after re-resolve', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1605,17 +1449,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2025, 10 /* November */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://old-session'),
|
||||
label: 'Old Session',
|
||||
timing: oldSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://old-session'),
|
||||
label: 'Old Session',
|
||||
timing: oldSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1636,17 +1474,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1668,17 +1500,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 1),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-with-endtime'),
|
||||
label: 'Session With EndTime',
|
||||
timing: sessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-with-endtime'),
|
||||
label: 'Session With EndTime',
|
||||
timing: sessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1700,17 +1526,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: undefined,
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-no-endtime'),
|
||||
label: 'Session Without EndTime',
|
||||
timing: sessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-no-endtime'),
|
||||
label: 'Session Without EndTime',
|
||||
timing: sessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1731,17 +1551,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1770,17 +1584,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1815,17 +1623,11 @@ suite('AgentSessions', () => {
|
||||
lastRequestEnded: Date.UTC(2026, 1 /* February */, 2),
|
||||
};
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://new-session'),
|
||||
label: 'New Session',
|
||||
timing: newSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -1858,17 +1660,11 @@ suite('AgentSessions', () => {
|
||||
};
|
||||
|
||||
const chatSessionType = 'test-type';
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://old-session'),
|
||||
label: 'Old Session',
|
||||
timing: oldSessionTiming,
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://old-session'),
|
||||
label: 'Old Session',
|
||||
timing: oldSessionTiming,
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(chatSessionType, controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2031,13 +1827,7 @@ suite('AgentSessions', () => {
|
||||
instantiationService.stub(IChatSessionsService, mockChatSessionsService);
|
||||
instantiationService.stub(ILifecycleService, disposables.add(new TestLifecycleService()));
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(AgentSessionProviders.Local, controller);
|
||||
const viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2058,13 +1848,7 @@ suite('AgentSessions', () => {
|
||||
instantiationService.stub(IChatSessionsService, mockChatSessionsService);
|
||||
instantiationService.stub(ILifecycleService, disposables.add(new TestLifecycleService()));
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(AgentSessionProviders.Background, controller);
|
||||
const viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2085,13 +1869,7 @@ suite('AgentSessions', () => {
|
||||
instantiationService.stub(IChatSessionsService, mockChatSessionsService);
|
||||
instantiationService.stub(ILifecycleService, disposables.add(new TestLifecycleService()));
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController(AgentSessionProviders.Cloud, controller);
|
||||
const viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2113,18 +1891,12 @@ suite('AgentSessions', () => {
|
||||
instantiationService.stub(ILifecycleService, disposables.add(new TestLifecycleService()));
|
||||
|
||||
const customIcon = ThemeIcon.fromId('beaker');
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
iconPath: customIcon,
|
||||
timing: makeNewSessionTiming()
|
||||
}];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([{
|
||||
resource: URI.parse('test://session-1'),
|
||||
label: 'Test Session',
|
||||
iconPath: customIcon,
|
||||
timing: makeNewSessionTiming()
|
||||
}]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('custom-type', controller);
|
||||
const viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2143,13 +1915,7 @@ suite('AgentSessions', () => {
|
||||
instantiationService.stub(IChatSessionsService, mockChatSessionsService);
|
||||
instantiationService.stub(ILifecycleService, disposables.add(new TestLifecycleService()));
|
||||
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('custom-type', controller);
|
||||
const viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
@@ -2199,13 +1965,7 @@ suite('AgentSessions', () => {
|
||||
|
||||
test('should not resolve if lifecycle will shutdown', async () => {
|
||||
return runWithFakedTimers({}, async () => {
|
||||
const controller: IChatSessionItemController = {
|
||||
onDidChangeChatSessionItems: Event.None,
|
||||
refresh: async () => { },
|
||||
get items() {
|
||||
return [makeSimpleSessionItem('session-1')];
|
||||
}
|
||||
};
|
||||
const controller = new StaticChatSessionItemController([makeSimpleSessionItem('session-1')]);
|
||||
|
||||
mockChatSessionsService.registerChatSessionItemController('test-type', controller);
|
||||
viewModel = disposables.add(instantiationService.createInstance(AgentSessionsModel));
|
||||
|
||||
Reference in New Issue
Block a user