blob: 3c4bb62829f68b08d2b2640232bdbb7f57b57530 [file] [log] [blame]
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +01001/* eslint-disable @typescript-eslint/no-unused-vars */
2/**
3 * @license
Ben Rohlfs94fcbbc2022-05-27 10:45:03 +02004 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: Apache-2.0
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +01006 */
Ben Rohlfsa9d2cff2021-01-22 21:33:58 +01007import {RestApiService} from '../../services/gr-rest-api/gr-rest-api';
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +01008import {
9 AccountDetailInfo,
10 AccountExternalIdInfo,
11 AccountInfo,
12 ServerInfo,
13 ProjectInfo,
14 AccountCapabilityInfo,
15 SuggestedReviewerInfo,
16 GroupNameToGroupInfoMap,
17 ParsedJSON,
18 EditPreferencesInfo,
19 SshKeyInfo,
20 RepoName,
21 GpgKeyInfo,
22 PreferencesInfo,
23 EmailInfo,
24 ProjectAccessInfo,
25 CapabilityInfoMap,
26 ChangeInfo,
27 ProjectInfoWithName,
28 GroupInfo,
29 BranchInfo,
30 ConfigInfo,
31 EditInfo,
32 DashboardInfo,
33 ProjectAccessInfoMap,
34 IncludedInInfo,
35 CommentInfo,
36 PathToCommentsInfoMap,
37 PluginInfo,
38 DocResult,
39 ContributorAgreementInfo,
40 Password,
41 ProjectWatchInfo,
42 NameToProjectInfoMap,
43 GroupAuditEventInfo,
44 Base64FileContent,
45 TagInfo,
46 RelatedChangesInfo,
47 SubmittedTogetherInfo,
48 FilePathToDiffInfoMap,
49 BlameInfo,
50 ImagesForDiff,
51 ActionNameToActionInfoMap,
52 Hashtag,
53 FileNameToFileInfoMap,
54 TopMenuEntryInfo,
55 MergeableInfo,
56 CommitInfo,
57 GroupId,
58 GroupName,
59 UrlEncodedRepoName,
Dhruv Srivastavab0cebc12022-03-08 15:16:57 +010060 NumericChangeId,
Ben Rohlfs75b390c2022-04-04 14:56:06 +020061 PreferencesInput,
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +010062} from '../../types/common';
63import {DiffInfo, DiffPreferencesInfo} from '../../types/diff';
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +010064import {readResponsePayload} from '../../elements/shared/gr-rest-api-interface/gr-rest-apis/gr-rest-api-helper';
65import {
66 createAccountDetailWithId,
67 createChange,
68 createCommit,
69 createConfig,
70 createPreferences,
71 createServerInfo,
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +010072 createSubmittedTogetherInfo,
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +010073} from '../test-data-generators';
74import {
75 createDefaultDiffPrefs,
76 createDefaultEditPrefs,
77} from '../../constants/constants';
Ben Rohlfsa00ef282021-01-22 21:45:53 +010078import {ParsedChangeInfo} from '../../types/types';
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +010079
80export const grRestApiMock: RestApiService = {
81 addAccountEmail(): Promise<Response> {
82 return Promise.resolve(new Response());
83 },
84 addAccountGPGKey(): Promise<Record<string, GpgKeyInfo>> {
85 return Promise.resolve({});
86 },
87 addAccountSSHKey(): Promise<SshKeyInfo> {
88 throw new Error('addAccountSSHKey() not implemented by RestApiMock.');
89 },
90 addToAttentionSet(): Promise<Response> {
91 return Promise.resolve(new Response());
92 },
93 applyFixSuggestion(): Promise<Response> {
94 return Promise.resolve(new Response());
95 },
96 awaitPendingDiffDrafts(): Promise<void> {
97 return Promise.resolve();
98 },
99 confirmEmail(): Promise<string | null> {
100 return Promise.resolve('');
101 },
102 createChange(): Promise<ChangeInfo | undefined> {
103 throw new Error('createChange() not implemented by RestApiMock.');
104 },
105 createGroup(): Promise<Response> {
106 return Promise.resolve(new Response());
107 },
108 createRepo(): Promise<Response> {
109 return Promise.resolve(new Response());
110 },
111 createRepoBranch(): Promise<Response> {
112 return Promise.resolve(new Response());
113 },
114 createRepoTag(): Promise<Response> {
115 return Promise.resolve(new Response());
116 },
117 deleteAccountEmail(): Promise<Response> {
118 return Promise.resolve(new Response());
119 },
120 deleteAccountGPGKey(): Promise<Response> {
121 return Promise.resolve(new Response());
122 },
123 deleteAccountIdentity(): Promise<unknown> {
124 return Promise.resolve(new Response());
125 },
126 deleteAccountSSHKey(): void {},
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100127 deleteChangeCommitMessage(): Promise<Response> {
128 return Promise.resolve(new Response());
129 },
130 deleteComment(): Promise<CommentInfo> {
131 throw new Error('deleteComment() not implemented by RestApiMock.');
132 },
133 deleteDiffDraft(): Promise<Response> {
134 return Promise.resolve(new Response());
135 },
136 deleteDraftComments(): Promise<Response> {
137 return Promise.resolve(new Response());
138 },
139 deleteFileInChangeEdit(): Promise<Response | undefined> {
140 return Promise.resolve(new Response());
141 },
142 deleteGroupMember(): Promise<Response> {
143 return Promise.resolve(new Response());
144 },
145 deleteIncludedGroup(): Promise<Response> {
146 return Promise.resolve(new Response());
147 },
148 deleteRepoBranches(): Promise<Response> {
149 return Promise.resolve(new Response());
150 },
151 deleteRepoTags(): Promise<Response> {
152 return Promise.resolve(new Response());
153 },
154 deleteVote(): Promise<Response> {
155 return Promise.resolve(new Response());
156 },
157 deleteWatchedProjects(): Promise<Response> {
158 return Promise.resolve(new Response());
159 },
160 executeChangeAction(): Promise<Response | undefined> {
161 return Promise.resolve(new Response());
162 },
Chris Poucet55cbccb2021-11-16 03:17:06 +0100163 finalize(): void {},
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100164 generateAccountHttpPassword(): Promise<Password> {
165 return Promise.resolve('asdf');
166 },
167 getAccount(): Promise<AccountDetailInfo | undefined> {
168 return Promise.resolve(createAccountDetailWithId(1));
169 },
170 getAccountAgreements(): Promise<ContributorAgreementInfo[] | undefined> {
171 return Promise.resolve([]);
172 },
173 getAccountCapabilities(): Promise<AccountCapabilityInfo | undefined> {
174 return Promise.resolve({});
175 },
176 getAccountDetails(): Promise<AccountDetailInfo | undefined> {
177 return Promise.resolve(createAccountDetailWithId(1));
178 },
179 getAccountEmails(): Promise<EmailInfo[] | undefined> {
180 return Promise.resolve([]);
181 },
182 getAccountGPGKeys(): Promise<Record<string, GpgKeyInfo>> {
183 return Promise.resolve({});
184 },
185 getAccountGroups(): Promise<GroupInfo[] | undefined> {
186 return Promise.resolve([]);
187 },
188 getAccountSSHKeys(): Promise<SshKeyInfo[] | undefined> {
189 return Promise.resolve([]);
190 },
191 getAccountStatus(): Promise<string | undefined> {
192 return Promise.resolve('');
193 },
194 getAvatarChangeUrl(): Promise<string | undefined> {
195 return Promise.resolve('');
196 },
197 getBlame(): Promise<BlameInfo[] | undefined> {
198 return Promise.resolve([]);
199 },
200 getCapabilities(): Promise<CapabilityInfoMap | undefined> {
201 return Promise.resolve({});
202 },
203 getChange(): Promise<ChangeInfo | null> {
204 throw new Error('getChange() not implemented by RestApiMock.');
205 },
206 getChangeActionURL(): Promise<string> {
207 return Promise.resolve('');
208 },
209 getChangeCherryPicks(): Promise<ChangeInfo[] | undefined> {
210 return Promise.resolve([]);
211 },
212 getChangeCommitInfo(): Promise<CommitInfo | undefined> {
213 return Promise.resolve(createCommit());
214 },
215 getChangeConflicts(): Promise<ChangeInfo[] | undefined> {
216 return Promise.resolve([]);
217 },
Ben Rohlfsa16c51a2021-11-22 12:50:55 +0100218 getChangeDetail(
219 changeNum?: number | string
Ben Rohlfs1fe7f4d2021-12-06 11:21:49 +0100220 ): Promise<ParsedChangeInfo | undefined> {
Ben Rohlfsa16c51a2021-11-22 12:50:55 +0100221 if (changeNum === undefined) return Promise.resolve(undefined);
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100222 return Promise.resolve(createChange() as ParsedChangeInfo);
223 },
Ben Rohlfscb1e2562021-12-06 10:50:47 +0100224 getChangeEdit(): Promise<EditInfo | undefined> {
225 return Promise.resolve(undefined);
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100226 },
227 getChangeFiles(): Promise<FileNameToFileInfoMap | undefined> {
228 return Promise.resolve({});
229 },
230 getChangeIncludedIn(): Promise<IncludedInInfo | undefined> {
231 throw new Error('getChangeIncludedIn() not implemented by RestApiMock.');
232 },
233 getChangeOrEditFiles(): Promise<FileNameToFileInfoMap | undefined> {
234 return Promise.resolve({});
235 },
236 getChangeRevisionActions(): Promise<ActionNameToActionInfoMap | undefined> {
237 return Promise.resolve({});
238 },
239 getChangeSuggestedCCs(): Promise<SuggestedReviewerInfo[] | undefined> {
240 return Promise.resolve([]);
241 },
242 getChangeSuggestedReviewers(): Promise<SuggestedReviewerInfo[] | undefined> {
243 return Promise.resolve([]);
244 },
245 getChanges() {
246 return Promise.resolve([]);
247 },
Dhruv Srivastava41e486f2022-03-08 13:44:26 +0100248 getChangesForMultipleQueries() {
249 return Promise.resolve([]);
250 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100251 getChangesSubmittedTogether(): Promise<SubmittedTogetherInfo | undefined> {
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +0100252 return Promise.resolve(createSubmittedTogetherInfo());
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100253 },
Dhruv Srivastavab0cebc12022-03-08 15:16:57 +0100254 getDetailedChangesWithActions(changeNums: NumericChangeId[]) {
255 return Promise.resolve(
256 changeNums.map(changeNum => {
257 return {
258 ...createChange(),
259 actions: {},
260 _number: changeNum,
261 subject: `Subject ${changeNum}`,
262 };
263 })
264 );
265 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100266 getChangesWithSameTopic(): Promise<ChangeInfo[] | undefined> {
267 return Promise.resolve([]);
268 },
Milutin Kristoficfc0f0112021-03-08 14:25:06 +0100269 getChangesWithSimilarTopic(): Promise<ChangeInfo[] | undefined> {
270 return Promise.resolve([]);
271 },
Frank Bordenfbe57cb2022-05-10 15:59:49 +0200272 getChangesWithSimilarHashtag(): Promise<ChangeInfo[] | undefined> {
273 return Promise.resolve([]);
274 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100275 getConfig(): Promise<ServerInfo | undefined> {
276 return Promise.resolve(createServerInfo());
277 },
278 getDashboard(): Promise<DashboardInfo | undefined> {
Dhruv Srivastavab642c242021-06-11 16:33:35 +0200279 return Promise.resolve(undefined);
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100280 },
281 getDefaultPreferences(): Promise<PreferencesInfo | undefined> {
282 throw new Error('getDefaultPreferences() not implemented by RestApiMock.');
283 },
284 getDiff(): Promise<DiffInfo | undefined> {
285 throw new Error('getDiff() not implemented by RestApiMock.');
286 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100287 getDiffComments() {
Chris Poucet55cbccb2021-11-16 03:17:06 +0100288 // NOTE: This method can not be typed properly due to overloads.
289 // eslint-disable-next-line @typescript-eslint/no-explicit-any
290 return Promise.resolve({}) as any;
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100291 },
292 getDiffDrafts() {
Chris Poucet55cbccb2021-11-16 03:17:06 +0100293 // NOTE: This method can not be typed properly due to overloads.
294 // eslint-disable-next-line @typescript-eslint/no-explicit-any
295 return Promise.resolve({}) as any;
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100296 },
297 getDiffPreferences(): Promise<DiffPreferencesInfo | undefined> {
298 return Promise.resolve(createDefaultDiffPrefs());
299 },
300 getDiffRobotComments() {
Chris Poucet55cbccb2021-11-16 03:17:06 +0100301 // NOTE: This method can not be typed properly due to overloads.
302 // eslint-disable-next-line @typescript-eslint/no-explicit-any
303 return Promise.resolve({}) as any;
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100304 },
305 getDocumentationSearches(): Promise<DocResult[] | undefined> {
306 return Promise.resolve([]);
307 },
308 getEditPreferences(): Promise<EditPreferencesInfo | undefined> {
309 return Promise.resolve(createDefaultEditPrefs());
310 },
311 getExternalIds(): Promise<AccountExternalIdInfo[] | undefined> {
312 return Promise.resolve([]);
313 },
314 getFileContent(): Promise<Response | Base64FileContent | undefined> {
315 return Promise.resolve(new Response());
316 },
317 getFromProjectLookup(): Promise<RepoName | undefined> {
318 throw new Error('getFromProjectLookup() not implemented by RestApiMock.');
319 },
320 getGroupAuditLog(): Promise<GroupAuditEventInfo[] | undefined> {
321 return Promise.resolve([]);
322 },
323 getGroupConfig(id: GroupId | GroupName): Promise<GroupInfo | undefined> {
324 return Promise.resolve({
325 id: id as GroupId,
326 });
327 },
328 getGroupMembers(): Promise<AccountInfo[]> {
329 return Promise.resolve([]);
330 },
331 getGroups(): Promise<GroupNameToGroupInfoMap | undefined> {
332 return Promise.resolve({});
333 },
334 getImagesForDiff(): Promise<ImagesForDiff> {
335 throw new Error('getImagesForDiff() not implemented by RestApiMock.');
336 },
337 getIncludedGroup(): Promise<GroupInfo[] | undefined> {
338 return Promise.resolve([]);
339 },
340 getIsAdmin(): Promise<boolean | undefined> {
341 return Promise.resolve(false);
342 },
343 getIsGroupOwner(): Promise<boolean> {
344 return Promise.resolve(false);
345 },
346 getLoggedIn(): Promise<boolean> {
347 return Promise.resolve(true);
348 },
349 getMergeable(): Promise<MergeableInfo | undefined> {
350 throw new Error('getMergeable() not implemented by RestApiMock.');
351 },
352 getPlugins(): Promise<{[p: string]: PluginInfo} | undefined> {
353 return Promise.resolve({});
354 },
355 getPortedComments(): Promise<PathToCommentsInfoMap | undefined> {
356 return Promise.resolve({});
357 },
358 getPortedDrafts(): Promise<PathToCommentsInfoMap | undefined> {
359 return Promise.resolve({});
360 },
361 getPreferences(): Promise<PreferencesInfo | undefined> {
362 return Promise.resolve(createPreferences());
363 },
364 getProjectConfig(): Promise<ConfigInfo | undefined> {
365 return Promise.resolve(createConfig());
366 },
367 getRelatedChanges(): Promise<RelatedChangesInfo | undefined> {
368 return Promise.resolve({changes: []});
369 },
370 getRepo(repo: RepoName): Promise<ProjectInfo | undefined> {
371 return Promise.resolve({
Chris Poucetcaeea1b2021-08-19 22:12:56 +0000372 id: repo as string as UrlEncodedRepoName,
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100373 name: repo,
374 });
375 },
376 getRepoAccess(): Promise<ProjectAccessInfoMap | undefined> {
377 return Promise.resolve({});
378 },
379 getRepoAccessRights(): Promise<ProjectAccessInfo | undefined> {
380 return Promise.resolve(undefined);
381 },
382 getRepoBranches(): Promise<BranchInfo[] | undefined> {
383 return Promise.resolve([]);
384 },
385 getRepoDashboards(): Promise<DashboardInfo[] | undefined> {
386 return Promise.resolve([]);
387 },
388 getRepoTags(): Promise<TagInfo[]> {
389 return Promise.resolve([]);
390 },
391 getRepos(): Promise<ProjectInfoWithName[] | undefined> {
392 return Promise.resolve([]);
393 },
394 getResponseObject(response: Response): Promise<ParsedJSON> {
395 return readResponsePayload(response).then(payload => payload.parsed);
396 },
397 getReviewedFiles(): Promise<string[] | undefined> {
398 return Promise.resolve([]);
399 },
400 getRobotCommentFixPreview(): Promise<FilePathToDiffInfoMap | undefined> {
401 return Promise.resolve({});
402 },
403 getSuggestedAccounts(): Promise<AccountInfo[] | undefined> {
404 return Promise.resolve([]);
405 },
406 getSuggestedGroups(): Promise<GroupNameToGroupInfoMap | undefined> {
407 return Promise.resolve({});
408 },
409 getSuggestedProjects(): Promise<NameToProjectInfoMap | undefined> {
410 return Promise.resolve({});
411 },
412 getTopMenus(): Promise<TopMenuEntryInfo[] | undefined> {
413 return Promise.resolve([]);
414 },
415 getVersion(): Promise<string | undefined> {
416 return Promise.resolve('');
417 },
418 getWatchedProjects(): Promise<ProjectWatchInfo[] | undefined> {
419 return Promise.resolve([]);
420 },
421 hasPendingDiffDrafts(): number {
422 return 0;
423 },
424 invalidateAccountsCache(): void {},
425 invalidateGroupsCache(): void {},
426 invalidateReposCache(): void {},
Przemyslaw Waliszewski5e036062021-05-31 17:10:18 +0200427 invalidateAccountsDetailCache(): void {},
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100428 probePath(): Promise<boolean> {
429 return Promise.resolve(true);
430 },
431 putChangeCommitMessage(): Promise<Response> {
432 return Promise.resolve(new Response());
433 },
434 queryChangeFiles(): Promise<string[] | undefined> {
435 return Promise.resolve([]);
436 },
437 removeChangeReviewer(): Promise<Response | undefined> {
438 return Promise.resolve(new Response());
439 },
440 removeFromAttentionSet(): Promise<Response> {
441 return Promise.resolve(new Response());
442 },
443 renameFileInChangeEdit(): Promise<Response | undefined> {
444 return Promise.resolve(new Response());
445 },
446 restoreFileInChangeEdit(): Promise<Response | undefined> {
447 return Promise.resolve(new Response());
448 },
449 runRepoGC(): Promise<Response> {
450 return Promise.resolve(new Response());
451 },
452 saveAccountAgreement(): Promise<Response> {
453 return Promise.resolve(new Response());
454 },
455 saveChangeEdit(): Promise<Response> {
456 return Promise.resolve(new Response());
457 },
458 saveChangeReview() {
459 return Promise.resolve(new Response());
460 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100461 saveChangeStarred(): Promise<Response> {
462 return Promise.resolve(new Response());
463 },
464 saveDiffDraft(): Promise<Response> {
465 return Promise.resolve(new Response());
466 },
467 saveDiffPreferences(): Promise<Response> {
468 return Promise.resolve(new Response());
469 },
470 saveEditPreferences(): Promise<Response> {
471 return Promise.resolve(new Response());
472 },
473 saveFileReviewed(): Promise<Response> {
474 return Promise.resolve(new Response());
475 },
476 saveFileUploadChangeEdit(): Promise<Response | undefined> {
477 return Promise.resolve(new Response());
478 },
479 saveGroupDescription(): Promise<Response> {
480 return Promise.resolve(new Response());
481 },
482 saveGroupMember(): Promise<AccountInfo> {
483 return Promise.resolve({});
484 },
485 saveGroupName(): Promise<Response> {
486 return Promise.resolve(new Response());
487 },
488 saveGroupOptions(): Promise<Response> {
489 return Promise.resolve(new Response());
490 },
491 saveGroupOwner(): Promise<Response> {
492 return Promise.resolve(new Response());
493 },
494 saveIncludedGroup(): Promise<GroupInfo | undefined> {
495 throw new Error('saveIncludedGroup() not implemented by RestApiMock.');
496 },
Ben Rohlfs75b390c2022-04-04 14:56:06 +0200497 savePreferences(input: PreferencesInput): Promise<PreferencesInfo> {
498 const info = input as PreferencesInfo;
499 return Promise.resolve({...info});
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100500 },
501 saveRepoConfig(): Promise<Response> {
502 return Promise.resolve(new Response());
503 },
504 saveWatchedProjects(): Promise<ProjectWatchInfo[]> {
505 return Promise.resolve([]);
506 },
507 send() {
508 return Promise.resolve(new Response());
509 },
510 setAccountDisplayName(): Promise<void> {
511 return Promise.resolve();
512 },
513 setAccountName(): Promise<void> {
514 return Promise.resolve();
515 },
516 setAccountStatus(): Promise<void> {
517 return Promise.resolve();
518 },
519 setAccountUsername(): Promise<void> {
520 return Promise.resolve();
521 },
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100522 setChangeHashtag(): Promise<Hashtag[]> {
523 return Promise.resolve([]);
524 },
525 setChangeTopic(): Promise<string> {
526 return Promise.resolve('');
527 },
528 setDescription(): Promise<Response> {
529 return Promise.resolve(new Response());
530 },
531 setInProjectLookup(): void {},
532 setPreferredAccountEmail(): Promise<void> {
533 return Promise.resolve();
534 },
535 setRepoAccessRights(): Promise<Response> {
536 return Promise.resolve(new Response());
537 },
538 setRepoAccessRightsForReview(): Promise<ChangeInfo> {
539 throw new Error('setRepoAccessRightsForReview() not implemented by mock.');
540 },
541 setRepoHead(): Promise<Response> {
542 return Promise.resolve(new Response());
543 },
544};