github-issue-tower-defence-management 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +6 -0
- package/.eslintrc.cjs +55 -0
- package/.github/CODEOWNERS +2 -0
- package/.github/workflows/assign-all-cards-to-owner.yml +14 -0
- package/.github/workflows/commit-lint.yml +54 -0
- package/.github/workflows/configs/commitlint.config.js +27 -0
- package/.github/workflows/create-pr.yml +64 -0
- package/.github/workflows/format.yml +25 -0
- package/.github/workflows/publish.yml +47 -0
- package/.github/workflows/test.yml +45 -0
- package/.github/workflows/umino-project.yml +181 -0
- package/.prettierignore +22 -0
- package/.prettierrc +5 -0
- package/CHANGELOG.md +49 -0
- package/CONTRIBUTING.md +107 -0
- package/README.md +108 -0
- package/bin/adapter/entry-points/cli/index.js +26 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -0
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +142 -0
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -0
- package/bin/adapter/repositories/AxiosSlackRepository.js +124 -0
- package/bin/adapter/repositories/AxiosSlackRepository.js.map +1 -0
- package/bin/adapter/repositories/BaseGitHubRepository.js +136 -0
- package/bin/adapter/repositories/BaseGitHubRepository.js.map +1 -0
- package/bin/adapter/repositories/GoogleSpreadsheetRepository.js +123 -0
- package/bin/adapter/repositories/GoogleSpreadsheetRepository.js.map +1 -0
- package/bin/adapter/repositories/GraphqlProjectRepository.js +167 -0
- package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -0
- package/bin/adapter/repositories/LocalStorageCacheRepository.js +46 -0
- package/bin/adapter/repositories/LocalStorageCacheRepository.js.map +1 -0
- package/bin/adapter/repositories/LocalStorageRepository.js +30 -0
- package/bin/adapter/repositories/LocalStorageRepository.js.map +1 -0
- package/bin/adapter/repositories/SystemDateRepository.js +23 -0
- package/bin/adapter/repositories/SystemDateRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +148 -0
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/ApiV3IssueRepository.js +48 -0
- package/bin/adapter/repositories/issue/ApiV3IssueRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/CheerioIssueRepository.js +120 -0
- package/bin/adapter/repositories/issue/CheerioIssueRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js +485 -0
- package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js +114 -0
- package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/RestIssueRepository.js +79 -0
- package/bin/adapter/repositories/issue/RestIssueRepository.js.map +1 -0
- package/bin/adapter/repositories/issue/issueTimelineUtils.js +38 -0
- package/bin/adapter/repositories/issue/issueTimelineUtils.js.map +1 -0
- package/bin/adapter/repositories/utils.js +45 -0
- package/bin/adapter/repositories/utils.js.map +1 -0
- package/bin/domain/entities/Issue.js +3 -0
- package/bin/domain/entities/Issue.js.map +1 -0
- package/bin/domain/entities/Member.js +3 -0
- package/bin/domain/entities/Member.js.map +1 -0
- package/bin/domain/entities/Project.js +3 -0
- package/bin/domain/entities/Project.js.map +1 -0
- package/bin/domain/entities/ProjectField.js +3 -0
- package/bin/domain/entities/ProjectField.js.map +1 -0
- package/bin/domain/entities/ProjectFieldSingleSelect.js +3 -0
- package/bin/domain/entities/ProjectFieldSingleSelect.js.map +1 -0
- package/bin/domain/entities/ProjectFieldSingleSelectOption.js +3 -0
- package/bin/domain/entities/ProjectFieldSingleSelectOption.js.map +1 -0
- package/bin/domain/entities/WorkingTime.js +3 -0
- package/bin/domain/entities/WorkingTime.js.map +1 -0
- package/bin/domain/usecases/ActionAnnouncementUseCase.js +46 -0
- package/bin/domain/usecases/ActionAnnouncementUseCase.js.map +1 -0
- package/bin/domain/usecases/AnalyzeProblemByIssueUseCase.js +116 -0
- package/bin/domain/usecases/AnalyzeProblemByIssueUseCase.js.map +1 -0
- package/bin/domain/usecases/ClearNextActionHourUseCase.js +38 -0
- package/bin/domain/usecases/ClearNextActionHourUseCase.js.map +1 -0
- package/bin/domain/usecases/GenerateWorkingTimeReportUseCase.js +180 -0
- package/bin/domain/usecases/GenerateWorkingTimeReportUseCase.js.map +1 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +122 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -0
- package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js +35 -0
- package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/DateRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/DateRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/IssueRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/IssueRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/ProjectRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/ProjectRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/SlackRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/SlackRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/SpreadsheetRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/SpreadsheetRepository.js.map +1 -0
- package/bin/index.js +13 -0
- package/bin/index.js.map +1 -0
- package/commitlint.config.js +6 -0
- package/jest.config.js +19 -0
- package/package.json +80 -0
- package/renovate.json +37 -0
- package/src/adapter/entry-points/cli/index.test.ts +20 -0
- package/src/adapter/entry-points/cli/index.ts +36 -0
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +95 -0
- package/src/adapter/repositories/AxiosSlackRepository.test.ts +119 -0
- package/src/adapter/repositories/AxiosSlackRepository.ts +184 -0
- package/src/adapter/repositories/BaseGitHubRepository.test.ts +95 -0
- package/src/adapter/repositories/BaseGitHubRepository.ts +172 -0
- package/src/adapter/repositories/GoogleSpreadsheetRepository.test.ts +124 -0
- package/src/adapter/repositories/GoogleSpreadsheetRepository.ts +151 -0
- package/src/adapter/repositories/GraphqlProjectRepository.test.ts +46 -0
- package/src/adapter/repositories/GraphqlProjectRepository.ts +236 -0
- package/src/adapter/repositories/LocalStorageCacheRepository.test.ts +146 -0
- package/src/adapter/repositories/LocalStorageCacheRepository.ts +53 -0
- package/src/adapter/repositories/LocalStorageRepository.integration.test.ts +142 -0
- package/src/adapter/repositories/LocalStorageRepository.test.ts +161 -0
- package/src/adapter/repositories/LocalStorageRepository.ts +21 -0
- package/src/adapter/repositories/SystemDateRepository.ts +20 -0
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +158 -0
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +274 -0
- package/src/adapter/repositories/issue/ApiV3IssueRepository.test.ts +26 -0
- package/src/adapter/repositories/issue/ApiV3IssueRepository.ts +59 -0
- package/src/adapter/repositories/issue/CheerioIssueRepository.test.ts +6610 -0
- package/src/adapter/repositories/issue/CheerioIssueRepository.ts +127 -0
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +49 -0
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.ts +745 -0
- package/src/adapter/repositories/issue/InternalGraphqlIssueRepository.test.ts +71 -0
- package/src/adapter/repositories/issue/InternalGraphqlIssueRepository.ts +263 -0
- package/src/adapter/repositories/issue/RestIssueRepository.test.ts +29 -0
- package/src/adapter/repositories/issue/RestIssueRepository.ts +105 -0
- package/src/adapter/repositories/issue/issueTimelineUtils.test.ts +79 -0
- package/src/adapter/repositories/issue/issueTimelineUtils.ts +52 -0
- package/src/adapter/repositories/utils.test.ts +40 -0
- package/src/adapter/repositories/utils.ts +50 -0
- package/src/domain/entities/Issue.ts +23 -0
- package/src/domain/entities/Member.ts +3 -0
- package/src/domain/entities/Project.ts +29 -0
- package/src/domain/entities/ProjectField.ts +3 -0
- package/src/domain/entities/ProjectFieldSingleSelect.ts +8 -0
- package/src/domain/entities/ProjectFieldSingleSelectOption.ts +8 -0
- package/src/domain/entities/WorkingTime.ts +8 -0
- package/src/domain/usecases/ActionAnnouncementUseCase.ts +76 -0
- package/src/domain/usecases/AnalyzeProblemByIssueUseCase.ts +209 -0
- package/src/domain/usecases/ClearNextActionHourUseCase.ts +51 -0
- package/src/domain/usecases/GenerateWorkingTimeReportUseCase.test.ts +382 -0
- package/src/domain/usecases/GenerateWorkingTimeReportUseCase.ts +284 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +58 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +209 -0
- package/src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts +46 -0
- package/src/domain/usecases/adapter-interfaces/DateRepository.ts +5 -0
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +44 -0
- package/src/domain/usecases/adapter-interfaces/ProjectRepository.ts +6 -0
- package/src/domain/usecases/adapter-interfaces/SlackRepository.ts +20 -0
- package/src/domain/usecases/adapter-interfaces/SpreadsheetRepository.ts +18 -0
- package/src/index.test.ts +8 -0
- package/src/index.ts +7 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +22 -0
- package/types/adapter/entry-points/cli/index.d.ts +3 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -0
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts +11 -0
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -0
- package/types/adapter/repositories/AxiosSlackRepository.d.ts +13 -0
- package/types/adapter/repositories/AxiosSlackRepository.d.ts.map +1 -0
- package/types/adapter/repositories/BaseGitHubRepository.d.ts +32 -0
- package/types/adapter/repositories/BaseGitHubRepository.d.ts.map +1 -0
- package/types/adapter/repositories/GoogleSpreadsheetRepository.d.ts +13 -0
- package/types/adapter/repositories/GoogleSpreadsheetRepository.d.ts.map +1 -0
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts +13 -0
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -0
- package/types/adapter/repositories/LocalStorageCacheRepository.d.ts +12 -0
- package/types/adapter/repositories/LocalStorageCacheRepository.d.ts.map +1 -0
- package/types/adapter/repositories/LocalStorageRepository.d.ts +7 -0
- package/types/adapter/repositories/LocalStorageRepository.d.ts.map +1 -0
- package/types/adapter/repositories/SystemDateRepository.d.ts +7 -0
- package/types/adapter/repositories/SystemDateRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +38 -0
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/ApiV3IssueRepository.d.ts +17 -0
- package/types/adapter/repositories/issue/ApiV3IssueRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/CheerioIssueRepository.d.ts +31 -0
- package/types/adapter/repositories/issue/CheerioIssueRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts +39 -0
- package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/InternalGraphqlIssueRepository.d.ts +83 -0
- package/types/adapter/repositories/issue/InternalGraphqlIssueRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/RestIssueRepository.d.ts +16 -0
- package/types/adapter/repositories/issue/RestIssueRepository.d.ts.map +1 -0
- package/types/adapter/repositories/issue/issueTimelineUtils.d.ts +12 -0
- package/types/adapter/repositories/issue/issueTimelineUtils.d.ts.map +1 -0
- package/types/adapter/repositories/utils.d.ts +4 -0
- package/types/adapter/repositories/utils.d.ts.map +1 -0
- package/types/domain/entities/Issue.d.ts +24 -0
- package/types/domain/entities/Issue.d.ts.map +1 -0
- package/types/domain/entities/Member.d.ts +4 -0
- package/types/domain/entities/Member.d.ts.map +1 -0
- package/types/domain/entities/Project.d.ts +29 -0
- package/types/domain/entities/Project.d.ts.map +1 -0
- package/types/domain/entities/ProjectField.d.ts +3 -0
- package/types/domain/entities/ProjectField.d.ts.map +1 -0
- package/types/domain/entities/ProjectFieldSingleSelect.d.ts +8 -0
- package/types/domain/entities/ProjectFieldSingleSelect.d.ts.map +1 -0
- package/types/domain/entities/ProjectFieldSingleSelectOption.d.ts +8 -0
- package/types/domain/entities/ProjectFieldSingleSelectOption.d.ts.map +1 -0
- package/types/domain/entities/WorkingTime.d.ts +8 -0
- package/types/domain/entities/WorkingTime.d.ts.map +1 -0
- package/types/domain/usecases/ActionAnnouncementUseCase.d.ts +17 -0
- package/types/domain/usecases/ActionAnnouncementUseCase.d.ts.map +1 -0
- package/types/domain/usecases/AnalyzeProblemByIssueUseCase.d.ts +26 -0
- package/types/domain/usecases/AnalyzeProblemByIssueUseCase.d.ts.map +1 -0
- package/types/domain/usecases/ClearNextActionHourUseCase.d.ts +14 -0
- package/types/domain/usecases/ClearNextActionHourUseCase.d.ts.map +1 -0
- package/types/domain/usecases/GenerateWorkingTimeReportUseCase.d.ts +50 -0
- package/types/domain/usecases/GenerateWorkingTimeReportUseCase.d.ts.map +1 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +63 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -0
- package/types/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.d.ts +14 -0
- package/types/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/DateRepository.d.ts +6 -0
- package/types/domain/usecases/adapter-interfaces/DateRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +23 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/ProjectRepository.d.ts +6 -0
- package/types/domain/usecases/adapter-interfaces/ProjectRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/SlackRepository.d.ts +9 -0
- package/types/domain/usecases/adapter-interfaces/SlackRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/SpreadsheetRepository.d.ts +6 -0
- package/types/domain/usecases/adapter-interfaces/SpreadsheetRepository.d.ts.map +1 -0
- package/types/index.d.ts +10 -0
- package/types/index.d.ts.map +1 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import * as cheerio from 'cheerio';
|
|
3
|
+
import { BaseGitHubRepository } from '../BaseGitHubRepository';
|
|
4
|
+
import { WorkingTime } from '../../../domain/entities/WorkingTime';
|
|
5
|
+
import {
|
|
6
|
+
getInProgressTimeline,
|
|
7
|
+
IssueStatusTimeline,
|
|
8
|
+
} from './issueTimelineUtils';
|
|
9
|
+
import { InternalGraphqlIssueRepository } from './InternalGraphqlIssueRepository';
|
|
10
|
+
|
|
11
|
+
export type Issue = {
|
|
12
|
+
url: string;
|
|
13
|
+
title: string;
|
|
14
|
+
status: string;
|
|
15
|
+
assignees: string[];
|
|
16
|
+
labels: string[];
|
|
17
|
+
project: string;
|
|
18
|
+
statusTimeline: IssueStatusTimeline[];
|
|
19
|
+
inProgressTimeline: WorkingTime[];
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export class CheerioIssueRepository extends BaseGitHubRepository {
|
|
23
|
+
constructor(
|
|
24
|
+
readonly internalGraphqlIssueRepository: InternalGraphqlIssueRepository,
|
|
25
|
+
readonly jsonFilePath: string = './tmp/github.com.cookies.json',
|
|
26
|
+
readonly ghToken: string = process.env.GH_TOKEN || 'dummy',
|
|
27
|
+
) {
|
|
28
|
+
super(jsonFilePath, ghToken);
|
|
29
|
+
}
|
|
30
|
+
getIssue = async (issueUrl: string): Promise<Issue> => {
|
|
31
|
+
const headers = await this.createHeader();
|
|
32
|
+
const content = await axios.get<string>(issueUrl, { headers });
|
|
33
|
+
const html = content.data;
|
|
34
|
+
const $ = cheerio.load(html);
|
|
35
|
+
if (html.includes('react-app.embeddedData')) {
|
|
36
|
+
return this.internalGraphqlIssueRepository.getIssueFromBetaFeatureView(
|
|
37
|
+
issueUrl,
|
|
38
|
+
html,
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return this.getIssueFromNormalView(issueUrl, $);
|
|
42
|
+
};
|
|
43
|
+
getIssueFromNormalView = async (
|
|
44
|
+
issueUrl: string,
|
|
45
|
+
$: cheerio.CheerioAPI,
|
|
46
|
+
): Promise<Issue> => {
|
|
47
|
+
const title = this.getTitleFromCheerioObject($);
|
|
48
|
+
const statusOrig = this.getStatusFromCheerioObject($);
|
|
49
|
+
const assignees = this.getAssigneesFromCheerioObject($);
|
|
50
|
+
const labels = this.getLabelsFromCheerioObject($);
|
|
51
|
+
const project = this.getProjectFromCheerioObject($);
|
|
52
|
+
const statusTimeline = await this.getStatusTimelineEvents($);
|
|
53
|
+
const inProgressTimeline = await getInProgressTimeline(
|
|
54
|
+
statusTimeline,
|
|
55
|
+
issueUrl,
|
|
56
|
+
);
|
|
57
|
+
const status =
|
|
58
|
+
statusOrig !== ''
|
|
59
|
+
? statusOrig
|
|
60
|
+
: statusTimeline.length > 0
|
|
61
|
+
? statusTimeline[statusTimeline.length - 1].to
|
|
62
|
+
: '';
|
|
63
|
+
return {
|
|
64
|
+
url: issueUrl,
|
|
65
|
+
title,
|
|
66
|
+
status,
|
|
67
|
+
assignees,
|
|
68
|
+
labels,
|
|
69
|
+
project,
|
|
70
|
+
statusTimeline,
|
|
71
|
+
inProgressTimeline,
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
getStatusTimelineEvents = async (
|
|
75
|
+
$: cheerio.CheerioAPI,
|
|
76
|
+
): Promise<IssueStatusTimeline[]> => {
|
|
77
|
+
return this.getStatusTimelineEventsFromCheerioObject($);
|
|
78
|
+
};
|
|
79
|
+
protected getTitleFromCheerioObject = ($: cheerio.CheerioAPI): string => {
|
|
80
|
+
return $('h1 > bdi').text();
|
|
81
|
+
};
|
|
82
|
+
protected getStatusFromCheerioObject = ($: cheerio.CheerioAPI): string => {
|
|
83
|
+
return $('sidebar-memex-input > details > summary > span').text();
|
|
84
|
+
};
|
|
85
|
+
protected getAssigneesFromCheerioObject = (
|
|
86
|
+
$: cheerio.CheerioAPI,
|
|
87
|
+
): string[] => {
|
|
88
|
+
const assignees = $(
|
|
89
|
+
'div.sidebar-assignee > form > span > p > span > a.assignee > span',
|
|
90
|
+
);
|
|
91
|
+
return assignees.map((_, elem) => $(elem).text()).get();
|
|
92
|
+
};
|
|
93
|
+
protected getLabelsFromCheerioObject = ($: cheerio.CheerioAPI): string[] => {
|
|
94
|
+
return $('div.js-issue-labels > a > span')
|
|
95
|
+
.map((_, elem) => $(elem).text())
|
|
96
|
+
.get();
|
|
97
|
+
};
|
|
98
|
+
protected getProjectFromCheerioObject = ($: cheerio.CheerioAPI): string => {
|
|
99
|
+
return $('collapsible-sidebar-widget > div a > span').text();
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
protected getStatusTimelineEventsFromCheerioObject = (
|
|
103
|
+
$: cheerio.CheerioAPI,
|
|
104
|
+
): IssueStatusTimeline[] => {
|
|
105
|
+
const timelines = $('.TimelineItem-body');
|
|
106
|
+
const res: IssueStatusTimeline[] = [];
|
|
107
|
+
for (const timeline of timelines) {
|
|
108
|
+
const author = $(timeline).find('a.author').text();
|
|
109
|
+
if (!author) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const time = $(timeline).find('relative-time').attr('datetime');
|
|
113
|
+
if (!time) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const eventText = $(timeline).find('strong');
|
|
117
|
+
if (eventText.length != 2) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const from = $(eventText[0]).text();
|
|
121
|
+
const to = $(eventText[1]).text();
|
|
122
|
+
res.push({ time, author, from, to });
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return res;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { GraphqlProjectItemRepository } from './GraphqlProjectItemRepository';
|
|
2
|
+
|
|
3
|
+
describe('GraphqlProjectItemRepository', () => {
|
|
4
|
+
let repository: GraphqlProjectItemRepository;
|
|
5
|
+
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
repository = new GraphqlProjectItemRepository('', process.env.GH_TOKEN);
|
|
8
|
+
});
|
|
9
|
+
describe('getProjectItemFields', () => {
|
|
10
|
+
it('should return project item fields', async () => {
|
|
11
|
+
const owner = 'HiromiShikata';
|
|
12
|
+
const repositoryName = 'test-repository';
|
|
13
|
+
const issueNumber = 38;
|
|
14
|
+
|
|
15
|
+
const result = await repository.getProjectItemFields(
|
|
16
|
+
owner,
|
|
17
|
+
repositoryName,
|
|
18
|
+
issueNumber,
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(result).toEqual([
|
|
22
|
+
{
|
|
23
|
+
fieldName: 'Assignees',
|
|
24
|
+
fieldValue: '',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
fieldName: 'Repository',
|
|
28
|
+
fieldValue: 'test-repository',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
fieldName: '',
|
|
32
|
+
fieldValue: '',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
fieldName: '',
|
|
36
|
+
fieldValue: 'In progress test title',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
fieldName: 'Status',
|
|
40
|
+
fieldValue: 'Todo',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
fieldName: 'NextActionDate',
|
|
44
|
+
fieldValue: '2024-04-25',
|
|
45
|
+
},
|
|
46
|
+
]);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|