Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit341cc67

Browse files
jaggederestclaude
andcommitted
test: add Logger integration tests for workspacesProvider
- Add tests verifying workspacesProvider logs debug messages through Logger- Test that logging only happens when VS Code log level is Debug or lower- Test different workspace query types (Mine="owner:me", All="no filter")- Use createMockOutputChannelWithLogger factory for consistent test setup- No code changes needed - already compatible via Storage interface🤖 Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <noreply@anthropic.com>
1 parent9aac82d commit341cc67

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed

‎src/workspacesProvider.test.ts

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Api } from "coder/site/src/api/api";
22
import{describe,it,expect,vi,beforeAll}from"vitest";
33
import*asvscodefrom"vscode";
44
import{Storage}from"./storage";
5+
import{createMockOutputChannelWithLogger}from"./test-helpers";
56
import{WorkspaceProvider,WorkspaceQuery}from"./workspacesProvider";
67

78
// Mock dependencies
@@ -980,4 +981,162 @@ describe("workspacesProvider", () => {
980981
expect(result).toEqual([]);
981982
});
982983
});
984+
985+
describe("Logger integration",()=>{
986+
it("should log debug messages through Logger when Storage has Logger set",async()=>{
987+
const{ logger}=createMockOutputChannelWithLogger();
988+
989+
// Set debug log level to ensure message is logged
990+
constoriginalLogLevel=vscode.env.logLevel;
991+
//@ts-expect-error - mocking readonly property
992+
vscode.env.logLevel=vscode.LogLevel.Debug;
993+
994+
constmockWorkspaceQuery=WorkspaceQuery.Mine;
995+
constmockRestClient={
996+
getAxiosInstance:vi.fn(()=>({
997+
defaults:{baseURL:"https://test.coder.com"},
998+
})),
999+
getWorkspaces:vi.fn(()=>
1000+
Promise.resolve({
1001+
workspaces:[],
1002+
}),
1003+
),
1004+
}asunknownasApi;
1005+
1006+
// Create mock Storage that uses Logger
1007+
constmockStorage={
1008+
writeToCoderOutputChannel:vi.fn((msg:string)=>{
1009+
logger.debug(msg);
1010+
}),
1011+
}asunknownasStorage;
1012+
1013+
constprovider=newWorkspaceProvider(
1014+
mockWorkspaceQuery,
1015+
mockRestClient,
1016+
mockStorage,
1017+
);
1018+
1019+
// Mock extractAllAgents
1020+
const{ extractAllAgents}=awaitimport("./api-helper");
1021+
vi.mocked(extractAllAgents).mockReturnValue([]);
1022+
1023+
// Call private fetch method
1024+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1025+
await(providerasany).fetch();
1026+
1027+
// Verify debug message was logged
1028+
expect(mockStorage.writeToCoderOutputChannel).toHaveBeenCalledWith(
1029+
"Fetching workspaces: owner:me...",
1030+
);
1031+
1032+
constlogs=logger.getLogs();
1033+
expect(logs.length).toBe(1);
1034+
expect(logs[0].message).toBe("Fetching workspaces: owner:me...");
1035+
expect(logs[0].level).toBe("DEBUG");
1036+
1037+
// Restore log level
1038+
//@ts-expect-error - mocking readonly property
1039+
vscode.env.logLevel=originalLogLevel;
1040+
});
1041+
1042+
it("should work with Storage instance that has Logger set",async()=>{
1043+
const{ logger}=createMockOutputChannelWithLogger();
1044+
1045+
// Set debug log level
1046+
constoriginalLogLevel=vscode.env.logLevel;
1047+
//@ts-expect-error - mocking readonly property
1048+
vscode.env.logLevel=vscode.LogLevel.Debug;
1049+
1050+
constmockWorkspaceQuery=WorkspaceQuery.All;
1051+
constmockRestClient={
1052+
getAxiosInstance:vi.fn(()=>({
1053+
defaults:{baseURL:"https://example.com"},
1054+
})),
1055+
getWorkspaces:vi.fn(()=>
1056+
Promise.resolve({
1057+
workspaces:[],
1058+
}),
1059+
),
1060+
}asunknownasApi;
1061+
1062+
// Simulate Storage with Logger
1063+
constmockStorage={
1064+
writeToCoderOutputChannel:vi.fn((msg:string)=>{
1065+
logger.info(msg);
1066+
}),
1067+
}asunknownasStorage;
1068+
1069+
constprovider=newWorkspaceProvider(
1070+
mockWorkspaceQuery,
1071+
mockRestClient,
1072+
mockStorage,
1073+
);
1074+
1075+
// Mock extractAllAgents
1076+
const{ extractAllAgents}=awaitimport("./api-helper");
1077+
vi.mocked(extractAllAgents).mockReturnValue([]);
1078+
1079+
// Call private fetch method
1080+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1081+
await(providerasany).fetch();
1082+
1083+
// Verify message was logged through Logger
1084+
constlogs=logger.getLogs();
1085+
expect(logs.length).toBeGreaterThan(0);
1086+
expect(logs[0].message).toBe("Fetching workspaces: no filter...");
1087+
1088+
// Restore log level
1089+
//@ts-expect-error - mocking readonly property
1090+
vscode.env.logLevel=originalLogLevel;
1091+
});
1092+
1093+
it("should not log when log level is above Debug",async()=>{
1094+
const{ logger}=createMockOutputChannelWithLogger();
1095+
1096+
// Set info log level (above debug)
1097+
constoriginalLogLevel=vscode.env.logLevel;
1098+
//@ts-expect-error - mocking readonly property
1099+
vscode.env.logLevel=vscode.LogLevel.Info;
1100+
1101+
constmockWorkspaceQuery=WorkspaceQuery.Mine;
1102+
constmockRestClient={
1103+
getAxiosInstance:vi.fn(()=>({
1104+
defaults:{baseURL:"https://test.coder.com"},
1105+
})),
1106+
getWorkspaces:vi.fn(()=>
1107+
Promise.resolve({
1108+
workspaces:[],
1109+
}),
1110+
),
1111+
}asunknownasApi;
1112+
1113+
// Create mock Storage that uses Logger
1114+
constmockStorage={
1115+
writeToCoderOutputChannel:vi.fn((msg:string)=>{
1116+
logger.debug(msg);
1117+
}),
1118+
}asunknownasStorage;
1119+
1120+
constprovider=newWorkspaceProvider(
1121+
mockWorkspaceQuery,
1122+
mockRestClient,
1123+
mockStorage,
1124+
);
1125+
1126+
// Mock extractAllAgents
1127+
const{ extractAllAgents}=awaitimport("./api-helper");
1128+
vi.mocked(extractAllAgents).mockReturnValue([]);
1129+
1130+
// Call private fetch method
1131+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1132+
await(providerasany).fetch();
1133+
1134+
// Verify writeToCoderOutputChannel was NOT called
1135+
expect(mockStorage.writeToCoderOutputChannel).not.toHaveBeenCalled();
1136+
1137+
// Restore log level
1138+
//@ts-expect-error - mocking readonly property
1139+
vscode.env.logLevel=originalLogLevel;
1140+
});
1141+
});
9831142
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp