-
Notifications
You must be signed in to change notification settings - Fork 738
Expand file tree
/
Copy pathpullRequestBuilder.ts
More file actions
120 lines (112 loc) · 4.31 KB
/
pullRequestBuilder.ts
File metadata and controls
120 lines (112 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { createBuilderClass, createLink } from '../base';
import { BaseRefRepository, DefaultCommitMessage, DefaultCommitTitle, PullRequestResponse, Ref, RefRepository } from '../../../github/graphql';
import { RateLimitBuilder } from './rateLimitBuilder';
import { AccountType } from '../../../github/interface';
const RefRepositoryBuilder = createBuilderClass<RefRepository>()({
isInOrganization: { default: false },
owner: createLink<RefRepository['owner']>()({
login: { default: 'me' },
}),
url: { default: 'https://github.com/owner/repo' },
});
const BaseRefRepositoryBuilder = createBuilderClass<BaseRefRepository>()({
isInOrganization: { default: false },
owner: createLink<RefRepository['owner']>()({
login: { default: 'me' },
}),
url: { default: 'https://github.com/owner/repo' },
mergeCommitMessage: { default: DefaultCommitMessage.commitMessages },
mergeCommitTitle: { default: DefaultCommitTitle.mergeMessage },
squashMergeCommitMessage: { default: DefaultCommitMessage.prBody },
squashMergeCommitTitle: { default: DefaultCommitTitle.prTitle },
});
const RefBuilder = createBuilderClass<Ref>()({
name: { default: 'main' },
repository: { linked: RefRepositoryBuilder },
target: createLink<Ref['target']>()({
oid: { default: '0000000000000000000000000000000000000000' },
}),
});
type Repository = NonNullable<PullRequestResponse['repository']>;
type PullRequest = Repository['pullRequest'];
type Author = PullRequest['author'];
type AssigneesConn = PullRequest['assignees'];
type CommitsConn = PullRequest['commits'];
type LabelConn = PullRequest['labels'];
export const PullRequestBuilder = createBuilderClass<PullRequestResponse>()({
repository: createLink<Repository>()({
pullRequest: createLink<PullRequest>()({
id: { default: 'pr0' },
databaseId: { default: 1234 },
number: { default: 1347 },
url: { default: 'https://github.com/owner/repo/pulls/1347' },
state: { default: 'OPEN' },
body: { default: '**markdown**' },
bodyHTML: { default: '<h1>markdown</h1>' },
title: { default: 'plz merge' },
titleHTML: { default: 'plz merge' },
assignees: createLink<AssigneesConn>()({
nodes: {
default: [
{
avatarUrl: '',
email: '',
login: 'me',
url: 'https://github.com/me',
id: '123',
__typename: 'User',
name: 'Me'
},
],
},
}),
author: createLink<Author>()({
login: { default: 'me' },
url: { default: 'https://github.com/me' },
avatarUrl: { default: 'https://avatars3.githubusercontent.com/u/17565?v=4' },
id: { default: '123' },
name: { default: 'Me' },
email: { default: 'me@me.com' },
__typename: { default: AccountType.User },
}),
createdAt: { default: '2019-01-01T10:00:00Z' },
updatedAt: { default: '2019-01-01T11:00:00Z' },
headRef: { linked: RefBuilder },
headRefName: { default: 'pr-branch' },
headRefOid: { default: '0000000000000000000000000000000000000000' },
headRepository: { linked: RefRepositoryBuilder },
baseRef: { linked: RefBuilder },
baseRefName: { default: 'main' },
baseRefOid: { default: '0000000000000000000000000000000000000000' },
baseRepository: { linked: BaseRefRepositoryBuilder },
labels: createLink<LabelConn>()({
nodes: { default: [] },
}),
merged: { default: false },
mergeable: { default: 'MERGEABLE' },
mergeStateStatus: { default: 'CLEAN' },
reviewThreads: { default: { totalCount: 0 } },
isDraft: { default: false },
suggestedReviewers: { default: [] },
viewerCanEnableAutoMerge: { default: false },
viewerCanDisableAutoMerge: { default: false },
viewerCanUpdate: { default: false },
commits: createLink<CommitsConn>()({
nodes: {
default: [
{ commit: { message: 'commit 1' } },
]
}
}),
reactions: { default: { totalCount: 0 } },
comments: { default: { totalCount: 0 } },
reactionGroups: { default: [] },
})
}),
rateLimit: { linked: RateLimitBuilder },
});
export type PullRequestBuilder = InstanceType<typeof PullRequestBuilder>;