blob: 6e989e1882a4c7de647773c88489ac254283fe2d [file] [log] [blame]
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +02001/**
2 * @license
3 * Copyright (C) 2020 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18import {
Dmitrii Filippov47561922021-07-02 11:43:10 +020019 AccountDetailInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020020 AccountId,
21 AccountInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010022 AccountsConfigInfo,
23 ApprovalInfo,
24 AuthInfo,
Dmitrii Filippov47561922021-07-02 11:43:10 +020025 BasePatchSetNum,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020026 BranchName,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010027 ChangeConfigInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020028 ChangeId,
29 ChangeInfo,
30 ChangeInfoId,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020031 ChangeMessageId,
32 ChangeMessageInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010033 ChangeViewChangeInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020034 CommentLinkInfo,
35 CommentLinks,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010036 CommitId,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020037 CommitInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020038 ConfigInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010039 DownloadInfo,
40 EditPatchSetNum,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020041 EmailAddress,
Dmitrii Filippov47561922021-07-02 11:43:10 +020042 FixId,
43 FixSuggestionInfo,
44 GerritInfo,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020045 GitPersonInfo,
46 GitRef,
Dmitrii Filippov47561922021-07-02 11:43:10 +020047 GroupAuditEventInfo,
48 GroupAuditEventType,
49 GroupId,
50 GroupInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020051 InheritedBooleanInfo,
52 MaxObjectSizeLimitInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010053 MergeableInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020054 NumericChangeId,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020055 PatchSetNum,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010056 PluginConfigInfo,
57 PreferencesInfo,
Dmitrii Filippov47561922021-07-02 11:43:10 +020058 RelatedChangeAndCommitInfo,
59 RelatedChangesInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020060 RepoName,
Dmitrii Filippov47561922021-07-02 11:43:10 +020061 Requirement,
62 RequirementType,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020063 Reviewers,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020064 RevisionInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010065 SchemesInfoMap,
66 ServerInfo,
Dmitrii Filippov47561922021-07-02 11:43:10 +020067 SubmittedTogetherInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020068 SubmitTypeInfo,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010069 SuggestInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020070 Timestamp,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020071 TimezoneOffset,
Dhruv Srivastava52e7f152020-10-15 14:41:58 +020072 UrlEncodedCommentId,
Dmitrii Filippov47561922021-07-02 11:43:10 +020073 UserConfigInfo,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020074} from '../types/common';
75import {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010076 AccountsVisibility,
77 AppTheme,
78 AuthType,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020079 ChangeStatus,
Dmitrii Filippov47561922021-07-02 11:43:10 +020080 CommentSide,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010081 DateFormat,
82 DefaultBase,
83 DefaultDisplayNameConfig,
84 DiffViewMode,
85 EmailStrategy,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020086 InheritedBooleanInfoConfiguredValue,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010087 MergeabilityComputationBehavior,
Dmitrii Filippov47561922021-07-02 11:43:10 +020088 RequirementStatus,
Dmitrii Filippov0695d402020-10-22 16:57:57 +020089 RevisionKind,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020090 SubmitType,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010091 TimeFormat,
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +020092} from '../constants/constants';
93import {formatDate} from '../utils/date-util';
Ben Rohlfsa9d2cff2021-01-22 21:33:58 +010094import {GetDiffCommentsOutput} from '../services/gr-rest-api/gr-rest-api';
Dmitrii Filippov78448cd2020-10-26 17:39:11 +010095import {AppElementChangeViewParams} from '../elements/gr-app-types';
Milutin Kristofic40a6cde2020-11-30 23:48:28 +010096import {CommitInfoWithRequiredCommit} from '../elements/change/gr-change-metadata/gr-change-metadata';
97import {WebLinkInfo} from '../types/diff';
Dmitrii Filippov47561922021-07-02 11:43:10 +020098import {createCommentThreads, UIComment, UIDraft} from '../utils/comment-util';
Ben Rohlfsebe4acc2020-12-11 21:16:10 +010099import {GerritView} from '../services/router/router-model';
Dhruv Srivastava430c1dd2020-12-14 08:39:32 +0100100import {ChangeComments} from '../elements/diff/gr-comment-api/gr-comment-api';
Ben Rohlfsa00ef282021-01-22 21:45:53 +0100101import {EditRevisionInfo, ParsedChangeInfo} from '../types/types';
Dhruv Srivastava0d9e8f02021-03-10 12:39:52 +0100102import {ChangeMessage} from '../elements/change/gr-message/gr-message';
Paladox none18548462021-07-07 14:36:43 +0000103import {GenerateUrlEditViewParameters} from '../elements/core/gr-navigation/gr-navigation';
Milutin Kristofic8fc3d8f82021-08-10 20:25:21 +0200104import {
105 SubmitRequirementExpressionInfo,
106 SubmitRequirementResultInfo,
107 SubmitRequirementStatus,
108} from '../api/rest-api';
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +0200109
110export function dateToTimestamp(date: Date): Timestamp {
111 const nanosecondSuffix = '.000000000';
112 return (formatDate(date, 'YYYY-MM-DD HH:mm:ss') +
113 nanosecondSuffix) as Timestamp;
114}
115
116export function createCommentLink(match = 'test'): CommentLinkInfo {
117 return {
118 match,
119 };
120}
121
122export function createInheritedBoolean(value = false): InheritedBooleanInfo {
123 return {
124 value,
125 configured_value: value
126 ? InheritedBooleanInfoConfiguredValue.TRUE
127 : InheritedBooleanInfoConfiguredValue.FALSE,
128 };
129}
130
131export function createMaxObjectSizeLimit(): MaxObjectSizeLimitInfo {
132 return {};
133}
134
135export function createSubmitType(
136 value: Exclude<SubmitType, SubmitType.INHERIT> = SubmitType.MERGE_IF_NECESSARY
137): SubmitTypeInfo {
138 return {
139 value,
140 configured_value: SubmitType.INHERIT,
141 inherited_value: value,
142 };
143}
144
145export function createCommentLinks(): CommentLinks {
146 return {};
147}
148
149export function createConfig(): ConfigInfo {
150 return {
151 private_by_default: createInheritedBoolean(),
152 work_in_progress_by_default: createInheritedBoolean(),
153 max_object_size_limit: createMaxObjectSizeLimit(),
154 default_submit_type: createSubmitType(),
155 submit_type: SubmitType.INHERIT,
156 commentlinks: createCommentLinks(),
157 };
158}
159
160export function createAccountWithId(id = 5): AccountInfo {
161 return {
162 _account_id: id as AccountId,
163 };
164}
165
Ben Rohlfs07d0f6c2020-11-04 08:46:30 +0100166export function createAccountDetailWithId(id = 5): AccountDetailInfo {
167 return {
168 _account_id: id as AccountId,
169 registered_on: dateToTimestamp(new Date(2020, 10, 15, 14, 5, 8)),
170 };
171}
172
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +0200173export function createAccountWithEmail(email = 'test@'): AccountInfo {
174 return {
175 email: email as EmailAddress,
176 };
177}
178
179export function createAccountWithIdNameAndEmail(id = 5): AccountInfo {
180 return {
181 _account_id: id as AccountId,
182 email: `user-${id}@` as EmailAddress,
183 name: `User-${id}`,
184 };
185}
186
187export function createReviewers(): Reviewers {
188 return {};
189}
190
191export const TEST_PROJECT_NAME: RepoName = 'test-project' as RepoName;
192export const TEST_BRANCH_ID: BranchName = 'test-branch' as BranchName;
193export const TEST_CHANGE_ID: ChangeId = 'TestChangeId' as ChangeId;
194export const TEST_CHANGE_INFO_ID: ChangeInfoId = `${TEST_PROJECT_NAME}~${TEST_BRANCH_ID}~${TEST_CHANGE_ID}` as ChangeInfoId;
195export const TEST_SUBJECT = 'Test subject';
196export const TEST_NUMERIC_CHANGE_ID = 42 as NumericChangeId;
197
198export const TEST_CHANGE_CREATED = new Date(2020, 1, 1, 1, 2, 3);
199export const TEST_CHANGE_UPDATED = new Date(2020, 10, 6, 5, 12, 34);
200
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100201export function createGitPerson(name = 'Test name'): GitPersonInfo {
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200202 return {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100203 name,
Dmitrii Filippov3cd78fb2021-07-05 12:02:37 +0200204 email: `${name}@` as EmailAddress,
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200205 date: dateToTimestamp(new Date(2019, 11, 6, 14, 5, 8)),
206 tz: 0 as TimezoneOffset,
207 };
208}
209
210export function createCommit(): CommitInfo {
211 return {
212 parents: [],
213 author: createGitPerson(),
214 committer: createGitPerson(),
215 subject: 'Test commit subject',
216 message: 'Test commit message',
217 };
218}
219
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +0100220export function createCommitInfoWithRequiredCommit(
221 commit = 'commit'
222): CommitInfoWithRequiredCommit {
Milutin Kristofic40a6cde2020-11-30 23:48:28 +0100223 return {
224 ...createCommit(),
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +0100225 commit: commit as CommitId,
Milutin Kristofic40a6cde2020-11-30 23:48:28 +0100226 };
227}
228
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100229export function createRevision(patchSetNum = 1): RevisionInfo {
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200230 return {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100231 _number: patchSetNum as PatchSetNum,
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200232 commit: createCommit(),
233 created: dateToTimestamp(TEST_CHANGE_CREATED),
234 kind: RevisionKind.REWORK,
235 ref: 'refs/changes/5/6/1' as GitRef,
236 uploader: createAccountWithId(),
237 };
238}
239
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100240export function createEditRevision(): EditRevisionInfo {
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200241 return {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100242 _number: EditPatchSetNum,
Dhruv Srivastava591b4902021-03-10 11:48:12 +0100243 basePatchNum: 1 as BasePatchSetNum,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100244 commit: createCommit(),
245 };
246}
247
Dhruv Srivastava0d9e8f02021-03-10 12:39:52 +0100248export function createChangeMessageInfo(id = 'cm_id_1'): ChangeMessageInfo {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100249 return {
250 id: id as ChangeMessageId,
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200251 date: dateToTimestamp(TEST_CHANGE_CREATED),
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100252 message: `This is a message with id ${id}`,
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200253 };
254}
255
Dhruv Srivastava0d9e8f02021-03-10 12:39:52 +0100256export function createChangeMessage(id = 'cm_id_1'): ChangeMessage {
257 return {
258 ...createChangeMessageInfo(id),
259 type: '',
260 expanded: false,
261 commentThreads: [],
262 };
263}
264
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200265export function createRevisions(
266 count: number
267): {[revisionId: string]: RevisionInfo} {
268 const revisions: {[revisionId: string]: RevisionInfo} = {};
269 const revisionDate = TEST_CHANGE_CREATED;
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100270 const revisionIdStart = 1; // The same as getCurrentRevision
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200271 for (let i = 0; i < count; i++) {
272 const revisionId = (i + revisionIdStart).toString(16);
273 const revision: RevisionInfo = {
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100274 ...createRevision(i + 1),
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200275 created: dateToTimestamp(revisionDate),
276 ref: `refs/changes/5/6/${i + 1}` as GitRef,
277 };
278 revisions[revisionId] = revision;
279 // advance 1 day
280 revisionDate.setDate(revisionDate.getDate() + 1);
281 }
282 return revisions;
283}
284
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100285export function getCurrentRevision(count: number): CommitId {
286 const revisionIdStart = 1; // The same as createRevisions
287 return (count + revisionIdStart).toString(16) as CommitId;
288}
289
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200290export function createChangeMessages(count: number): ChangeMessageInfo[] {
291 const messageIdStart = 1000;
292 const messages: ChangeMessageInfo[] = [];
293 const messageDate = TEST_CHANGE_CREATED;
294 for (let i = 0; i < count; i++) {
295 messages.push({
Dhruv Srivastava0d9e8f02021-03-10 12:39:52 +0100296 ...createChangeMessageInfo((i + messageIdStart).toString(16)),
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200297 date: dateToTimestamp(messageDate),
Dmitrii Filippov0695d402020-10-22 16:57:57 +0200298 });
299 messageDate.setDate(messageDate.getDate() + 1);
300 }
301 return messages;
302}
303
Dmitrii Filippovfc3e4f72020-10-22 16:57:57 +0200304export function createChange(): ChangeInfo {
305 return {
306 id: TEST_CHANGE_INFO_ID,
307 project: TEST_PROJECT_NAME,
308 branch: TEST_BRANCH_ID,
309 change_id: TEST_CHANGE_ID,
310 subject: TEST_SUBJECT,
311 status: ChangeStatus.NEW,
312 created: dateToTimestamp(TEST_CHANGE_CREATED),
313 updated: dateToTimestamp(TEST_CHANGE_UPDATED),
314 insertions: 0,
315 deletions: 0,
316 _number: TEST_NUMERIC_CHANGE_ID,
317 owner: createAccountWithId(),
318 // This is documented as optional, but actually always set.
319 reviewers: createReviewers(),
320 };
321}
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100322
323export function createChangeViewChange(): ChangeViewChangeInfo {
324 return {
325 ...createChange(),
326 revisions: {
327 abc: createRevision(),
328 },
329 current_revision: 'abc' as CommitId,
330 };
331}
332
333export function createParsedChange(): ParsedChangeInfo {
334 return createChangeViewChange();
335}
336
337export function createAccountsConfig(): AccountsConfigInfo {
338 return {
339 visibility: AccountsVisibility.ALL,
340 default_display_name: DefaultDisplayNameConfig.FULL_NAME,
341 };
342}
343
344export function createAuth(): AuthInfo {
345 return {
346 auth_type: AuthType.OPENID,
347 editable_account_fields: [],
348 };
349}
350
351export function createChangeConfig(): ChangeConfigInfo {
352 return {
353 large_change: 500,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100354 // The default update_delay is 5 minutes, but we don't want to accidentally
355 // start polling in tests
356 update_delay: 0,
357 mergeability_computation_behavior:
358 MergeabilityComputationBehavior.REF_UPDATED_AND_CHANGE_REINDEX,
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100359 enable_assignee: false,
360 };
361}
362
363export function createDownloadSchemes(): SchemesInfoMap {
364 return {};
365}
366
367export function createDownloadInfo(): DownloadInfo {
368 return {
369 schemes: createDownloadSchemes(),
370 archives: ['tgz', 'tar'],
371 };
372}
373
374export function createGerritInfo(): GerritInfo {
375 return {
376 all_projects: 'All-Projects',
377 all_users: 'All-Users',
378 doc_search: false,
379 };
380}
381
382export function createPluginConfig(): PluginConfigInfo {
383 return {
384 has_avatars: false,
385 js_resource_paths: [],
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100386 };
387}
388
389export function createSuggestInfo(): SuggestInfo {
390 return {
391 from: 0,
392 };
393}
394
395export function createUserConfig(): UserConfigInfo {
396 return {
397 anonymous_coward_name: 'Name of user not set',
398 };
399}
400
401export function createServerInfo(): ServerInfo {
402 return {
403 accounts: createAccountsConfig(),
404 auth: createAuth(),
405 change: createChangeConfig(),
406 download: createDownloadInfo(),
407 gerrit: createGerritInfo(),
408 plugin: createPluginConfig(),
409 suggest: createSuggestInfo(),
410 user: createUserConfig(),
411 };
412}
413
414export function createGetDiffCommentsOutput(): GetDiffCommentsOutput {
415 return {
416 baseComments: [],
417 comments: [],
418 };
419}
420
421export function createMergeable(): MergeableInfo {
422 return {
423 submit_type: SubmitType.MERGE_IF_NECESSARY,
424 mergeable: false,
425 };
426}
427
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +0100428// TODO: Maybe reconcile with createDefaultPreferences() in constants.ts.
Dmitrii Filippov78448cd2020-10-26 17:39:11 +0100429export function createPreferences(): PreferencesInfo {
430 return {
431 changes_per_page: 10,
432 theme: AppTheme.LIGHT,
433 date_format: DateFormat.ISO,
434 time_format: TimeFormat.HHMM_24,
435 diff_view: DiffViewMode.SIDE_BY_SIDE,
436 my: [],
437 change_table: [],
438 email_strategy: EmailStrategy.ENABLED,
439 default_base_for_merges: DefaultBase.AUTO_MERGE,
440 };
441}
442
443export function createApproval(): ApprovalInfo {
444 return createAccountWithId();
445}
446
447export function createAppElementChangeViewParams(): AppElementChangeViewParams {
448 return {
449 view: GerritView.CHANGE,
450 changeNum: TEST_NUMERIC_CHANGE_ID,
451 project: TEST_PROJECT_NAME,
452 };
453}
Milutin Kristofic40a6cde2020-11-30 23:48:28 +0100454
Paladox none18548462021-07-07 14:36:43 +0000455export function createGenerateUrlEditViewParameters(): GenerateUrlEditViewParameters {
456 return {
457 view: GerritView.EDIT,
458 changeNum: TEST_NUMERIC_CHANGE_ID,
459 patchNum: EditPatchSetNum as PatchSetNum,
460 path: 'foo/bar.baz',
461 project: TEST_PROJECT_NAME,
462 };
463}
464
Milutin Kristofic40a6cde2020-11-30 23:48:28 +0100465export function createRequirement(): Requirement {
466 return {
467 status: RequirementStatus.OK,
468 fallbackText: '',
469 type: 'wip' as RequirementType,
470 };
471}
472
473export function createWebLinkInfo(): WebLinkInfo {
474 return {
475 name: 'gitiles',
476 url: '#',
477 image_url: 'gitiles.jpg',
478 };
479}
Dhruv Srivastava52e7f152020-10-15 14:41:58 +0200480
481export function createComment(): UIComment {
482 return {
483 patch_set: 1 as PatchSetNum,
484 id: '12345' as UrlEncodedCommentId,
485 side: CommentSide.REVISION,
486 line: 1,
487 message: 'hello world',
488 updated: '2018-02-13 22:48:48.018000000' as Timestamp,
489 unresolved: false,
Dhruv Srivastava254cb722021-03-08 21:15:37 +0100490 path: 'abc.txt',
Dhruv Srivastava52e7f152020-10-15 14:41:58 +0200491 };
492}
493
494export function createDraft(): UIDraft {
495 return {
496 ...createComment(),
497 collapsed: false,
498 __draft: true,
499 __editing: false,
500 };
501}
Dhruv Srivastava430c1dd2020-12-14 08:39:32 +0100502
503export function createChangeComments(): ChangeComments {
504 const comments = {
505 '/COMMIT_MSG': [
506 {
507 ...createComment(),
508 message: 'Done',
509 updated: '2017-02-08 16:40:49' as Timestamp,
510 id: '1' as UrlEncodedCommentId,
511 },
512 {
513 ...createComment(),
514 message: 'oh hay',
515 updated: '2017-02-09 16:40:49' as Timestamp,
516 id: '2' as UrlEncodedCommentId,
517 },
518 {
519 ...createComment(),
520 patch_set: 2 as PatchSetNum,
521 message: 'hello',
522 updated: '2017-02-10 16:40:49' as Timestamp,
523 id: '3' as UrlEncodedCommentId,
524 },
525 ],
526 'myfile.txt': [
527 {
528 ...createComment(),
529 message: 'good news!',
530 updated: '2017-02-08 16:40:49' as Timestamp,
531 id: '4' as UrlEncodedCommentId,
532 },
533 {
534 ...createComment(),
535 patch_set: 2 as PatchSetNum,
536 message: 'wat!?',
537 updated: '2017-02-09 16:40:49' as Timestamp,
538 id: '5' as UrlEncodedCommentId,
539 },
540 {
541 ...createComment(),
542 patch_set: 2 as PatchSetNum,
543 message: 'hi',
544 updated: '2017-02-10 16:40:49' as Timestamp,
545 id: '6' as UrlEncodedCommentId,
546 },
547 ],
548 'unresolved.file': [
549 {
550 ...createComment(),
551 patch_set: 2 as PatchSetNum,
552 message: 'wat!?',
553 updated: '2017-02-09 16:40:49' as Timestamp,
554 id: '7' as UrlEncodedCommentId,
555 unresolved: true,
556 },
557 {
558 ...createComment(),
559 patch_set: 2 as PatchSetNum,
560 message: 'hi',
561 updated: '2017-02-10 16:40:49' as Timestamp,
562 id: '8' as UrlEncodedCommentId,
563 in_reply_to: '7' as UrlEncodedCommentId,
564 unresolved: false,
565 },
566 {
567 ...createComment(),
568 patch_set: 2 as PatchSetNum,
569 message: 'good news!',
570 updated: '2017-02-08 16:40:49' as Timestamp,
571 id: '9' as UrlEncodedCommentId,
572 unresolved: true,
573 },
574 ],
575 };
576 const drafts = {
577 '/COMMIT_MSG': [
578 {
579 ...createDraft(),
580 message: 'hi',
581 updated: '2017-02-15 16:40:49' as Timestamp,
582 id: '10' as UrlEncodedCommentId,
583 unresolved: true,
584 },
585 {
586 ...createDraft(),
587 message: 'fyi',
588 updated: '2017-02-15 16:40:49' as Timestamp,
589 id: '11' as UrlEncodedCommentId,
590 unresolved: false,
591 },
592 ],
593 'unresolved.file': [
594 {
595 ...createDraft(),
596 message: 'hi',
597 updated: '2017-02-11 16:40:49' as Timestamp,
598 id: '12' as UrlEncodedCommentId,
599 unresolved: false,
600 },
601 ],
602 };
603 return new ChangeComments(comments, {}, drafts, {}, {});
604}
Dhruv Srivastavad6737fb2020-12-16 13:54:12 +0100605
606export function createCommentThread(comments: UIComment[]) {
Dhruv Srivastava254cb722021-03-08 21:15:37 +0100607 if (!comments.length) {
608 throw new Error('comment is required to create a thread');
609 }
Dhruv Srivastavad6737fb2020-12-16 13:54:12 +0100610 comments = comments.map(comment => {
611 return {...createComment(), ...comment};
612 });
613 const threads = createCommentThreads(comments);
Dhruv Srivastava254cb722021-03-08 21:15:37 +0100614 return threads[0];
Dhruv Srivastavad6737fb2020-12-16 13:54:12 +0100615}
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +0100616
617export function createRelatedChangeAndCommitInfo(): RelatedChangeAndCommitInfo {
618 return {
619 project: TEST_PROJECT_NAME,
620 commit: createCommitInfoWithRequiredCommit(),
621 };
622}
623
Milutin Kristoficd26e7422021-03-16 20:19:01 +0100624export function createRelatedChangesInfo(): RelatedChangesInfo {
625 return {
626 changes: [],
627 };
628}
629
Milutin Kristoficf4c04fb42021-03-10 16:41:19 +0100630export function createSubmittedTogetherInfo(): SubmittedTogetherInfo {
631 return {
632 changes: [],
633 non_visible_changes: 0,
634 };
635}
Dmitrii Filippov131bf7a2021-04-01 18:02:27 +0200636
637export function createFixSuggestionInfo(fixId = 'fix_1'): FixSuggestionInfo {
638 return {
639 fix_id: fixId as FixId,
640 description: `Fix ${fixId}`,
641 replacements: [],
642 };
643}
Milutin Kristofic1cc62b52021-06-15 08:35:02 +0200644
645export function createGroupInfo(id = 'id'): GroupInfo {
646 return {
647 id: id as GroupId,
648 };
649}
Dmitrii Filippov47561922021-07-02 11:43:10 +0200650
651export function createGroupAuditEventInfo(
652 type: GroupAuditEventType
653): GroupAuditEventInfo {
654 if (
655 type === GroupAuditEventType.ADD_USER ||
656 type === GroupAuditEventType.REMOVE_USER
657 ) {
658 return {
659 type,
660 member: createAccountWithId(10),
661 user: createAccountWithId(),
662 date: dateToTimestamp(new Date(2019, 11, 6, 14, 5, 8)),
663 };
664 } else {
665 return {
666 type,
667 member: createGroupInfo(),
668 user: createAccountWithId(),
669 date: dateToTimestamp(new Date(2019, 11, 6, 14, 5, 8)),
670 };
671 }
672}
Milutin Kristofic8fc3d8f82021-08-10 20:25:21 +0200673
674export function createSubmitRequirementExpressionInfo(): SubmitRequirementExpressionInfo {
675 return {
676 expression: 'label:Verified=MAX -label:Verified=MIN',
677 fulfilled: true,
678 passing_atoms: ['label2:verified=MAX'],
679 failing_atoms: ['label2:verified=MIN'],
680 };
681}
682
683export function createSubmitRequirementResultInfo(): SubmitRequirementResultInfo {
684 return {
685 name: 'Verified',
686 status: SubmitRequirementStatus.SATISFIED,
687 submittability_expression_result: createSubmitRequirementExpressionInfo(),
688 };
689}