github-issue-tower-defence-management 1.23.0 → 1.25.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/.github/workflows/test.yml +2 -2
- package/CHANGELOG.md +15 -0
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +6 -2
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/repositories/GraphqlProjectRepository.js +12 -0
- package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +9 -0
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/bin/domain/entities/ClaudeWindowUsage.js +3 -0
- package/bin/domain/entities/ClaudeWindowUsage.js.map +1 -0
- package/bin/domain/entities/Comment.js +3 -0
- package/bin/domain/entities/Comment.js.map +1 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +1 -2
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +81 -0
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -0
- package/bin/domain/usecases/StartPreparationUseCase.js +104 -0
- package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/ClaudeRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/ClaudeRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/IssueCommentRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/IssueCommentRepository.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/LocalCommandRunner.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/LocalCommandRunner.js.map +1 -0
- package/package.json +1 -1
- package/src/adapter/repositories/CheerioProjectRepository.test.ts +1 -0
- package/src/adapter/repositories/GraphqlProjectRepository.test.ts +1 -0
- package/src/adapter/repositories/GraphqlProjectRepository.ts +14 -1
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +1 -0
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +15 -1
- package/src/domain/entities/ClaudeWindowUsage.ts +5 -0
- package/src/domain/entities/Comment.ts +5 -0
- package/src/domain/entities/Project.ts +1 -0
- package/src/domain/usecases/GetStoryObjectMapUseCase.test.ts +1 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +32 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +2 -2
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +669 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +132 -0
- package/src/domain/usecases/StartPreparationUseCase.test.ts +715 -0
- package/src/domain/usecases/StartPreparationUseCase.ts +191 -0
- package/src/domain/usecases/adapter-interfaces/ClaudeRepository.ts +5 -0
- package/src/domain/usecases/adapter-interfaces/IssueCommentRepository.ts +7 -0
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +11 -0
- package/src/domain/usecases/adapter-interfaces/LocalCommandRunner.ts +7 -0
- package/src/domain/usecases/adapter-interfaces/ProjectRepository.ts +1 -0
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts +2 -1
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +4 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/domain/entities/ClaudeWindowUsage.d.ts +6 -0
- package/types/domain/entities/ClaudeWindowUsage.d.ts.map +1 -0
- package/types/domain/entities/Comment.d.ts +6 -0
- package/types/domain/entities/Comment.d.ts.map +1 -0
- package/types/domain/entities/Project.d.ts +1 -0
- package/types/domain/entities/Project.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +1 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +24 -0
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -0
- package/types/domain/usecases/StartPreparationUseCase.d.ts +37 -0
- package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/ClaudeRepository.d.ts +5 -0
- package/types/domain/usecases/adapter-interfaces/ClaudeRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/IssueCommentRepository.d.ts +7 -0
- package/types/domain/usecases/adapter-interfaces/IssueCommentRepository.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +10 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/LocalCommandRunner.d.ts +8 -0
- package/types/domain/usecases/adapter-interfaces/LocalCommandRunner.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/ProjectRepository.d.ts +1 -0
- package/types/domain/usecases/adapter-interfaces/ProjectRepository.d.ts.map +1 -1
|
@@ -156,6 +156,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
156
156
|
disabledStatus: 'disabled',
|
|
157
157
|
defaultStatus: null,
|
|
158
158
|
disabled: false,
|
|
159
|
+
allowIssueCacheMinutes: 60,
|
|
159
160
|
};
|
|
160
161
|
|
|
161
162
|
const mockProject = mock<Project>();
|
|
@@ -179,6 +180,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
179
180
|
disabledStatus: 'disabled',
|
|
180
181
|
defaultStatus: 'ToDo',
|
|
181
182
|
disabled: false,
|
|
183
|
+
allowIssueCacheMinutes: 60,
|
|
182
184
|
};
|
|
183
185
|
|
|
184
186
|
const mockProject = mock<Project>();
|
|
@@ -206,6 +208,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
206
208
|
disabledStatus: 'disabled',
|
|
207
209
|
defaultStatus: null,
|
|
208
210
|
disabled: false,
|
|
211
|
+
allowIssueCacheMinutes: 60,
|
|
209
212
|
};
|
|
210
213
|
|
|
211
214
|
const mockProject = mock<Project>();
|
|
@@ -233,6 +236,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
233
236
|
disabledStatus: 'disabled',
|
|
234
237
|
defaultStatus: null,
|
|
235
238
|
disabled: true,
|
|
239
|
+
allowIssueCacheMinutes: 60,
|
|
236
240
|
};
|
|
237
241
|
|
|
238
242
|
const result = await useCase.run(input);
|
|
@@ -257,6 +261,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
257
261
|
disabledStatus: 'disabled',
|
|
258
262
|
defaultStatus: null,
|
|
259
263
|
disabled: false,
|
|
264
|
+
allowIssueCacheMinutes: 60,
|
|
260
265
|
};
|
|
261
266
|
|
|
262
267
|
const mockProject = mock<Project>();
|
|
@@ -265,5 +270,32 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
265
270
|
expect(result).not.toBeNull();
|
|
266
271
|
expect(mockProjectRepository.findProjectIdByUrl).toHaveBeenCalled();
|
|
267
272
|
});
|
|
273
|
+
|
|
274
|
+
it('should pass allowIssueCacheMinutes to getAllIssues', async () => {
|
|
275
|
+
const input = {
|
|
276
|
+
projectName: 'test-project',
|
|
277
|
+
org: 'test-org',
|
|
278
|
+
projectUrl: 'https://github.com/test-org/test-project',
|
|
279
|
+
manager: 'test-manager',
|
|
280
|
+
workingReport: {
|
|
281
|
+
repo: 'test-repo',
|
|
282
|
+
members: ['member1'],
|
|
283
|
+
spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
|
|
284
|
+
},
|
|
285
|
+
urlOfStoryView: 'https://github.com/test-org/test-project/issues',
|
|
286
|
+
disabledStatus: 'disabled',
|
|
287
|
+
defaultStatus: null,
|
|
288
|
+
disabled: false,
|
|
289
|
+
allowIssueCacheMinutes: 120,
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
const mockProject = mock<Project>();
|
|
293
|
+
mockProjectRepository.getProject.mockResolvedValue(mockProject);
|
|
294
|
+
await useCase.run(input);
|
|
295
|
+
expect(mockIssueRepository.getAllIssues).toHaveBeenCalledWith(
|
|
296
|
+
'project-1',
|
|
297
|
+
120,
|
|
298
|
+
);
|
|
299
|
+
});
|
|
268
300
|
});
|
|
269
301
|
});
|
|
@@ -71,6 +71,7 @@ export class HandleScheduledEventUseCase {
|
|
|
71
71
|
disabledStatus: string;
|
|
72
72
|
defaultStatus: string | null;
|
|
73
73
|
disabled: boolean;
|
|
74
|
+
allowIssueCacheMinutes: number;
|
|
74
75
|
}): Promise<{
|
|
75
76
|
project: Project;
|
|
76
77
|
issues: Issue[];
|
|
@@ -98,11 +99,10 @@ export class HandleScheduledEventUseCase {
|
|
|
98
99
|
);
|
|
99
100
|
}
|
|
100
101
|
const now: Date = await this.dateRepository.now();
|
|
101
|
-
const allowIssueCacheMinutes = 60;
|
|
102
102
|
const { issues, cacheUsed }: { issues: Issue[]; cacheUsed: boolean } =
|
|
103
103
|
await this.issueRepository.getAllIssues(
|
|
104
104
|
projectId,
|
|
105
|
-
allowIssueCacheMinutes,
|
|
105
|
+
input.allowIssueCacheMinutes,
|
|
106
106
|
);
|
|
107
107
|
const storyIssues: StoryObjectMap = await this.storyIssues({
|
|
108
108
|
project,
|