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

Commit9a3b37d

Browse files
jaggederestclaude
andcommitted
fix: resolve Uri type errors in extension tests
- Updated createMockUri to properly handle query strings by splitting pathWithQuery parameter- Fixed extension.test.ts to use createMockUri helper instead of inline objects- All tests now pass with proper Uri mock objects that include query property🤖 Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <noreply@anthropic.com>
1 parentc73c742 commit9a3b37d

File tree

2 files changed

+45
-40
lines changed

2 files changed

+45
-40
lines changed

‎src/extension.test.ts

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
createMockAxiosInstance,
1515
createMockConfiguration,
1616
createMockTreeView,
17+
createMockUri,
1718
}from"./test-helpers";
1819

1920
// Setup all mocks
@@ -116,12 +117,33 @@ beforeEach(() => {
116117
vi.clearAllMocks();
117118
});
118119

120+
// Test helper functions
121+
constsetupVSCodeMocks=async()=>{
122+
constvscode=awaitimport("vscode");
123+
returnvscode;
124+
};
125+
126+
constcreateAuthTestContext=()=>{
127+
constmockStorage=createMockStorage({writeToCoderOutputChannel:vi.fn()});
128+
constmockMyWorkspacesProvider=createMockWorkspaceProvider({
129+
fetchAndRefresh:vi.fn(),
130+
});
131+
constmockAllWorkspacesProvider=createMockWorkspaceProvider({
132+
fetchAndRefresh:vi.fn(),
133+
});
134+
return{
135+
mockStorage,
136+
mockMyWorkspacesProvider,
137+
mockAllWorkspacesProvider,
138+
};
139+
};
140+
119141
describe("extension",()=>{
120142
describe("setupRemoteSSHExtension",()=>{
121143
it.each([
122144
["ms-vscode-remote.remote-ssh","ms-vscode-remote.remote-ssh",false],
123145
])("should handle %s",async(_,extensionId,shouldShowError)=>{
124-
constvscode=awaitimport("vscode");
146+
constvscode=awaitsetupVSCodeMocks();
125147
constmockExtension=extensionId
126148
?createMockRemoteSSHExtension({extensionPath:"/path/to/extension"})
127149
:undefined;
@@ -150,7 +172,7 @@ describe("extension", () => {
150172

151173
describe("initializeInfrastructure",()=>{
152174
it("should create storage and logger with verbose setting from config",async()=>{
153-
constvscode=awaitimport("vscode");
175+
constvscode=awaitsetupVSCodeMocks();
154176
constStorage=(awaitimport("./storage")).Storage;
155177
constLogger=(awaitimport("./logger")).Logger;
156178

@@ -165,17 +187,13 @@ describe("extension", () => {
165187
});
166188

167189
// Track Storage and Logger creation
168-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
169-
letstorageInstance:any;
170-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
171-
letloggerInstance:any;
172-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
173-
vi.mocked(Storage).mockImplementation((...args:any[])=>{
190+
letstorageInstance:unknown;
191+
letloggerInstance:unknown;
192+
vi.mocked(Storage).mockImplementation((...args:unknown[])=>{
174193
storageInstance={ args,setLogger:vi.fn()};
175194
returnstorageInstanceasnever;
176195
});
177-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
178-
vi.mocked(Logger).mockImplementation((...args:any[])=>{
196+
vi.mocked(Logger).mockImplementation((...args:unknown[])=>{
179197
loggerInstance={ args};
180198
returnloggerInstanceasnever;
181199
});
@@ -316,17 +334,15 @@ describe("extension", () => {
316334
});
317335

318336
describe("registerUriHandler",()=>{
319-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
320-
letregisteredHandler:any;
337+
letregisteredHandler:vscodeActual.UriHandler;
321338

322339
constsetupUriHandler=async()=>{
323340
const{ needToken}=awaitimport("./api");
324341
const{ toSafeHost}=awaitimport("./util");
325-
constvscode=awaitimport("vscode");
342+
constvscode=awaitsetupVSCodeMocks();
326343

327344
vi.mocked(vscode.window.registerUriHandler).mockImplementation(
328-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
329-
(handler:any)=>{
345+
(handler:vscodeActual.UriHandler)=>{
330346
registeredHandler=handler;
331347
return{dispose:vi.fn()};
332348
},
@@ -335,7 +351,8 @@ describe("extension", () => {
335351
return{ needToken, toSafeHost};
336352
};
337353

338-
it.each([
354+
// Test data for URI handler tests
355+
consturiHandlerTestCases=[
339356
{
340357
name:"/open path with all parameters",
341358
path:"/open",
@@ -370,7 +387,9 @@ describe("extension", () => {
370387
"/workspace",
371388
],
372389
},
373-
])(
390+
];
391+
392+
it.each(uriHandlerTestCases)(
374393
"should handle $name",
375394
async({ path, query, mockUrl, oldUrl, hasToken, expectedCommand})=>{
376395
constvscode=awaitimport("vscode");
@@ -394,7 +413,7 @@ describe("extension", () => {
394413
mockRestClientasnever,
395414
mockStorageasnever,
396415
);
397-
awaitregisteredHandler.handleUri({path,query});
416+
awaitregisteredHandler.handleUri(createMockUri(`${path}?${query}`));
398417

399418
expect(mockCommands.maybeAskUrl).toHaveBeenCalledWith(mockUrl,oldUrl);
400419
expect(mockRestClient.setHost).toHaveBeenCalledWith(mockUrl);
@@ -429,7 +448,7 @@ describe("extension", () => {
429448
mocks.storageasnever,
430449
);
431450
awaitexpect(
432-
registeredHandler.handleUri({path:"/unknown",query:""}),
451+
registeredHandler.handleUri(createMockUri("/unknown?")),
433452
).rejects.toThrow("Unknown path /unknown");
434453
});
435454

@@ -458,7 +477,7 @@ describe("extension", () => {
458477
mocks.storageasnever,
459478
);
460479
awaitexpect(
461-
registeredHandler.handleUri({path,query}),
480+
registeredHandler.handleUri(createMockUri(`${path}?${query}`)),
462481
).rejects.toThrow(error);
463482
});
464483
});
@@ -571,21 +590,6 @@ describe("extension", () => {
571590
vi.clearAllMocks();
572591
});
573592

574-
constcreateAuthTestSetup=()=>{
575-
constmockStorage={writeToCoderOutputChannel:vi.fn()};
576-
constmockMyWorkspacesProvider=createMockWorkspaceProvider({
577-
fetchAndRefresh:vi.fn(),
578-
});
579-
constmockAllWorkspacesProvider=createMockWorkspaceProvider({
580-
fetchAndRefresh:vi.fn(),
581-
});
582-
return{
583-
mockStorage,
584-
mockMyWorkspacesProvider,
585-
mockAllWorkspacesProvider,
586-
};
587-
};
588-
589593
it.each([
590594
[
591595
"valid member authentication",
@@ -600,7 +604,7 @@ describe("extension", () => {
600604
mockStorage,
601605
mockMyWorkspacesProvider,
602606
mockAllWorkspacesProvider,
603-
}=createAuthTestSetup();
607+
}=createAuthTestContext();
604608

605609
constmockRestClient={
606610
getAxiosInstance:vi

‎src/test-helpers.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,19 +1214,20 @@ export function createMockProxyAgent(
12141214
* Create a mock vscode.Uri
12151215
*/
12161216
exportfunctioncreateMockUri(
1217-
path:string,
1217+
pathWithQuery:string,
12181218
scheme:string="file",
12191219
):vscode.Uri{
1220+
const[path,query=""]=pathWithQuery.split("?");
12201221
return{
12211222
scheme,
12221223
path,
12231224
fsPath:path,
12241225
authority:"",
1225-
query:"",
1226+
query,
12261227
fragment:"",
12271228
with:vi.fn(),
1228-
toString:vi.fn(()=>`${scheme}://${path}`),
1229-
toJSON:vi.fn(()=>({ scheme, path})),
1229+
toString:vi.fn(()=>`${scheme}://${path}${query ?`?${query}` :""}`),
1230+
toJSON:vi.fn(()=>({ scheme, path, query})),
12301231
}asunknownasvscode.Uri;
12311232
}
12321233

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp