@sk8metal/michi-cli 0.5.0 → 0.8.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.
Files changed (284) hide show
  1. package/CHANGELOG.md +136 -1
  2. package/README.md +2 -1
  3. package/dist/scripts/config/config-schema.d.ts +35 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +56 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  8. package/dist/scripts/confluence-sync.js +15 -2
  9. package/dist/scripts/confluence-sync.js.map +1 -1
  10. package/dist/scripts/github-actions-client.d.ts +79 -0
  11. package/dist/scripts/github-actions-client.d.ts.map +1 -0
  12. package/dist/scripts/github-actions-client.js +182 -0
  13. package/dist/scripts/github-actions-client.js.map +1 -0
  14. package/dist/scripts/health-check-service.d.ts +46 -0
  15. package/dist/scripts/health-check-service.d.ts.map +1 -0
  16. package/dist/scripts/health-check-service.js +114 -0
  17. package/dist/scripts/health-check-service.js.map +1 -0
  18. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
  19. package/dist/scripts/markdown-to-confluence.js +25 -3
  20. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  21. package/dist/scripts/mermaid-converter.d.ts +24 -0
  22. package/dist/scripts/mermaid-converter.d.ts.map +1 -0
  23. package/dist/scripts/mermaid-converter.js +49 -0
  24. package/dist/scripts/mermaid-converter.js.map +1 -0
  25. package/dist/scripts/template/multi-repo-renderer.d.ts +67 -0
  26. package/dist/scripts/template/multi-repo-renderer.d.ts.map +1 -0
  27. package/dist/scripts/template/multi-repo-renderer.js +123 -0
  28. package/dist/scripts/template/multi-repo-renderer.js.map +1 -0
  29. package/dist/scripts/template/renderer.d.ts +4 -0
  30. package/dist/scripts/template/renderer.d.ts.map +1 -1
  31. package/dist/scripts/template/renderer.js.map +1 -1
  32. package/dist/scripts/test-execution-generator.d.ts.map +1 -1
  33. package/dist/scripts/test-execution-generator.js +94 -11
  34. package/dist/scripts/test-execution-generator.js.map +1 -1
  35. package/dist/scripts/test-script-runner.d.ts +33 -0
  36. package/dist/scripts/test-script-runner.d.ts.map +1 -0
  37. package/dist/scripts/test-script-runner.js +77 -0
  38. package/dist/scripts/test-script-runner.js.map +1 -0
  39. package/dist/scripts/utils/config-loader.d.ts +21 -1
  40. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  41. package/dist/scripts/utils/config-loader.js +149 -3
  42. package/dist/scripts/utils/config-loader.js.map +1 -1
  43. package/dist/scripts/utils/multi-repo-validator.d.ts +30 -0
  44. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -0
  45. package/dist/scripts/utils/multi-repo-validator.js +105 -0
  46. package/dist/scripts/utils/multi-repo-validator.js.map +1 -0
  47. package/dist/scripts/utils/spec-archiver.d.ts +38 -0
  48. package/dist/scripts/utils/spec-archiver.d.ts.map +1 -0
  49. package/dist/scripts/utils/spec-archiver.js +210 -0
  50. package/dist/scripts/utils/spec-archiver.js.map +1 -0
  51. package/dist/scripts/utils/spec-updater.d.ts +4 -0
  52. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  53. package/dist/scripts/utils/spec-updater.js.map +1 -1
  54. package/dist/src/cli.d.ts.map +1 -1
  55. package/dist/src/cli.js +262 -14
  56. package/dist/src/cli.js.map +1 -1
  57. package/dist/src/commands/multi-repo-add-repo.d.ts +26 -0
  58. package/dist/src/commands/multi-repo-add-repo.d.ts.map +1 -0
  59. package/dist/src/commands/multi-repo-add-repo.js +56 -0
  60. package/dist/src/commands/multi-repo-add-repo.js.map +1 -0
  61. package/dist/src/commands/multi-repo-ci-status.d.ts +46 -0
  62. package/dist/src/commands/multi-repo-ci-status.d.ts.map +1 -0
  63. package/dist/src/commands/multi-repo-ci-status.js +285 -0
  64. package/dist/src/commands/multi-repo-ci-status.js.map +1 -0
  65. package/dist/src/commands/multi-repo-confluence-sync.d.ts +45 -0
  66. package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +1 -0
  67. package/dist/src/commands/multi-repo-confluence-sync.js +135 -0
  68. package/dist/src/commands/multi-repo-confluence-sync.js.map +1 -0
  69. package/dist/src/commands/multi-repo-init.d.ts +26 -0
  70. package/dist/src/commands/multi-repo-init.d.ts.map +1 -0
  71. package/dist/src/commands/multi-repo-init.js +101 -0
  72. package/dist/src/commands/multi-repo-init.js.map +1 -0
  73. package/dist/src/commands/multi-repo-list.d.ts +28 -0
  74. package/dist/src/commands/multi-repo-list.d.ts.map +1 -0
  75. package/dist/src/commands/multi-repo-list.js +38 -0
  76. package/dist/src/commands/multi-repo-list.js.map +1 -0
  77. package/dist/src/commands/multi-repo-test.d.ts +56 -0
  78. package/dist/src/commands/multi-repo-test.d.ts.map +1 -0
  79. package/dist/src/commands/multi-repo-test.js +70 -0
  80. package/dist/src/commands/multi-repo-test.js.map +1 -0
  81. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  82. package/dist/src/commands/setup-existing.js +30 -8
  83. package/dist/src/commands/setup-existing.js.map +1 -1
  84. package/dist/src/commands/spec-archive.d.ts +17 -0
  85. package/dist/src/commands/spec-archive.d.ts.map +1 -0
  86. package/dist/src/commands/spec-archive.js +40 -0
  87. package/dist/src/commands/spec-archive.js.map +1 -0
  88. package/dist/src/commands/spec-list.d.ts +15 -0
  89. package/dist/src/commands/spec-list.d.ts.map +1 -0
  90. package/dist/src/commands/spec-list.js +55 -0
  91. package/dist/src/commands/spec-list.js.map +1 -0
  92. package/docs/user-guide/guides/multi-repo-guide.md +591 -0
  93. package/docs/user-guide/guides/multi-repo-migration-guide.md +516 -0
  94. package/docs/user-guide/reference/multi-repo-api.md +771 -0
  95. package/docs/user-guide/reference/quick-reference.md +22 -37
  96. package/package.json +1 -4
  97. package/scripts/__tests__/config-loader-multi-repo.test.ts +342 -0
  98. package/scripts/__tests__/github-actions-client.test.ts +543 -0
  99. package/scripts/__tests__/health-check-service.test.ts +142 -0
  100. package/scripts/__tests__/markdown-to-confluence.test.ts +262 -0
  101. package/scripts/__tests__/mermaid-converter.test.ts +236 -0
  102. package/scripts/__tests__/multi-repo-config-schema.test.ts +335 -0
  103. package/scripts/__tests__/multi-repo-validator.test.ts +524 -0
  104. package/scripts/__tests__/spec-archiver.test.ts +512 -0
  105. package/scripts/__tests__/test-script-runner.test.ts +217 -0
  106. package/scripts/config/config-schema.ts +64 -0
  107. package/scripts/confluence-sync.ts +16 -2
  108. package/scripts/github-actions-client.ts +258 -0
  109. package/scripts/health-check-service.ts +171 -0
  110. package/scripts/markdown-to-confluence.ts +37 -6
  111. package/scripts/mermaid-converter.ts +56 -0
  112. package/scripts/template/__tests__/multi-repo-renderer.test.ts +261 -0
  113. package/scripts/template/multi-repo-renderer.ts +172 -0
  114. package/scripts/template/renderer.ts +5 -0
  115. package/scripts/test-execution-generator.ts +104 -11
  116. package/scripts/test-script-runner.ts +130 -0
  117. package/scripts/utils/__tests__/config-validator.test.ts +104 -6
  118. package/scripts/utils/__tests__/multi-repo-validator.test.ts +335 -0
  119. package/scripts/utils/config-loader.ts +197 -3
  120. package/scripts/utils/multi-repo-validator.ts +141 -0
  121. package/scripts/utils/spec-archiver.ts +260 -0
  122. package/scripts/utils/spec-updater.ts +4 -0
  123. package/templates/claude/agents/pr-size-monitor/AGENT.md +330 -0
  124. package/templates/claude/commands/michi/spec-impl.md +208 -35
  125. package/templates/claude-agent/agents/doc-reviewer.md +176 -0
  126. package/templates/claude-agent/rules/doc-review-rules.md +98 -0
  127. package/templates/claude-agent/rules/doc-review.md +91 -0
  128. package/templates/multi-repo/docs/ci-status.md +51 -0
  129. package/templates/multi-repo/docs/release-notes.md +99 -0
  130. package/templates/multi-repo/overview/architecture.md +102 -0
  131. package/templates/multi-repo/overview/requirements.md +68 -0
  132. package/templates/multi-repo/overview/sequence.md +79 -0
  133. package/templates/multi-repo/steering/multi-repo.md +74 -0
  134. package/templates/multi-repo/tests/strategy.md +89 -0
  135. package/dist/scripts/__tests__/create-project.test.d.ts +0 -2
  136. package/dist/scripts/__tests__/create-project.test.d.ts.map +0 -1
  137. package/dist/scripts/__tests__/create-project.test.js +0 -243
  138. package/dist/scripts/__tests__/create-project.test.js.map +0 -1
  139. package/dist/scripts/__tests__/jira-transitions.test.d.ts +0 -5
  140. package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +0 -1
  141. package/dist/scripts/__tests__/jira-transitions.test.js +0 -172
  142. package/dist/scripts/__tests__/jira-transitions.test.js.map +0 -1
  143. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts +0 -2
  144. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts.map +0 -1
  145. package/dist/scripts/__tests__/multi-project-estimate.test.js +0 -118
  146. package/dist/scripts/__tests__/multi-project-estimate.test.js.map +0 -1
  147. package/dist/scripts/__tests__/setup-existing-project.test.d.ts +0 -2
  148. package/dist/scripts/__tests__/setup-existing-project.test.d.ts.map +0 -1
  149. package/dist/scripts/__tests__/setup-existing-project.test.js +0 -208
  150. package/dist/scripts/__tests__/setup-existing-project.test.js.map +0 -1
  151. package/dist/scripts/__tests__/setup-interactive.test.d.ts +0 -2
  152. package/dist/scripts/__tests__/setup-interactive.test.d.ts.map +0 -1
  153. package/dist/scripts/__tests__/setup-interactive.test.js +0 -166
  154. package/dist/scripts/__tests__/setup-interactive.test.js.map +0 -1
  155. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +0 -5
  156. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +0 -1
  157. package/dist/scripts/__tests__/spec-impl-workflow.test.js +0 -323
  158. package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +0 -1
  159. package/dist/scripts/__tests__/spec-loader.test.d.ts +0 -5
  160. package/dist/scripts/__tests__/spec-loader.test.d.ts.map +0 -1
  161. package/dist/scripts/__tests__/spec-loader.test.js +0 -153
  162. package/dist/scripts/__tests__/spec-loader.test.js.map +0 -1
  163. package/dist/scripts/__tests__/validate-phase.test.d.ts +0 -5
  164. package/dist/scripts/__tests__/validate-phase.test.d.ts.map +0 -1
  165. package/dist/scripts/__tests__/validate-phase.test.js +0 -249
  166. package/dist/scripts/__tests__/validate-phase.test.js.map +0 -1
  167. package/dist/scripts/constants/__tests__/environments.test.d.ts +0 -2
  168. package/dist/scripts/constants/__tests__/environments.test.d.ts.map +0 -1
  169. package/dist/scripts/constants/__tests__/environments.test.js +0 -125
  170. package/dist/scripts/constants/__tests__/environments.test.js.map +0 -1
  171. package/dist/scripts/constants/__tests__/languages.test.d.ts +0 -2
  172. package/dist/scripts/constants/__tests__/languages.test.d.ts.map +0 -1
  173. package/dist/scripts/constants/__tests__/languages.test.js +0 -82
  174. package/dist/scripts/constants/__tests__/languages.test.js.map +0 -1
  175. package/dist/scripts/create-project.d.ts +0 -16
  176. package/dist/scripts/create-project.d.ts.map +0 -1
  177. package/dist/scripts/create-project.js +0 -334
  178. package/dist/scripts/create-project.js.map +0 -1
  179. package/dist/scripts/list-projects.d.ts +0 -7
  180. package/dist/scripts/list-projects.d.ts.map +0 -1
  181. package/dist/scripts/list-projects.js +0 -88
  182. package/dist/scripts/list-projects.js.map +0 -1
  183. package/dist/scripts/template/__tests__/renderer.test.d.ts +0 -2
  184. package/dist/scripts/template/__tests__/renderer.test.d.ts.map +0 -1
  185. package/dist/scripts/template/__tests__/renderer.test.js +0 -165
  186. package/dist/scripts/template/__tests__/renderer.test.js.map +0 -1
  187. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +0 -5
  188. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +0 -1
  189. package/dist/scripts/utils/__tests__/aidlc-parser.test.js +0 -315
  190. package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +0 -1
  191. package/dist/scripts/utils/__tests__/business-days.test.d.ts +0 -5
  192. package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +0 -1
  193. package/dist/scripts/utils/__tests__/business-days.test.js +0 -171
  194. package/dist/scripts/utils/__tests__/business-days.test.js.map +0 -1
  195. package/dist/scripts/utils/__tests__/config-loader.test.d.ts +0 -5
  196. package/dist/scripts/utils/__tests__/config-loader.test.d.ts.map +0 -1
  197. package/dist/scripts/utils/__tests__/config-loader.test.js +0 -314
  198. package/dist/scripts/utils/__tests__/config-loader.test.js.map +0 -1
  199. package/dist/scripts/utils/__tests__/config-validator.test.d.ts +0 -5
  200. package/dist/scripts/utils/__tests__/config-validator.test.d.ts.map +0 -1
  201. package/dist/scripts/utils/__tests__/config-validator.test.js +0 -396
  202. package/dist/scripts/utils/__tests__/config-validator.test.js.map +0 -1
  203. package/dist/scripts/utils/__tests__/env-config.test.d.ts +0 -5
  204. package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +0 -1
  205. package/dist/scripts/utils/__tests__/env-config.test.js +0 -216
  206. package/dist/scripts/utils/__tests__/env-config.test.js.map +0 -1
  207. package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts +0 -5
  208. package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts.map +0 -1
  209. package/dist/scripts/utils/__tests__/feature-name-validator.test.js +0 -106
  210. package/dist/scripts/utils/__tests__/feature-name-validator.test.js.map +0 -1
  211. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +0 -5
  212. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +0 -1
  213. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +0 -202
  214. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +0 -1
  215. package/dist/scripts/utils/__tests__/project-meta.test.d.ts +0 -6
  216. package/dist/scripts/utils/__tests__/project-meta.test.d.ts.map +0 -1
  217. package/dist/scripts/utils/__tests__/project-meta.test.js +0 -154
  218. package/dist/scripts/utils/__tests__/project-meta.test.js.map +0 -1
  219. package/dist/scripts/utils/__tests__/security-validator.test.d.ts +0 -6
  220. package/dist/scripts/utils/__tests__/security-validator.test.d.ts.map +0 -1
  221. package/dist/scripts/utils/__tests__/security-validator.test.js +0 -219
  222. package/dist/scripts/utils/__tests__/security-validator.test.js.map +0 -1
  223. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts +0 -5
  224. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts.map +0 -1
  225. package/dist/scripts/utils/__tests__/spec-updater.test.js +0 -158
  226. package/dist/scripts/utils/__tests__/spec-updater.test.js.map +0 -1
  227. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +0 -5
  228. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +0 -1
  229. package/dist/scripts/utils/__tests__/tasks-converter.test.js +0 -500
  230. package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +0 -1
  231. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +0 -5
  232. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +0 -1
  233. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +0 -314
  234. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +0 -1
  235. package/dist/scripts/utils/__tests__/test-runner.test.d.ts +0 -5
  236. package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +0 -1
  237. package/dist/scripts/utils/__tests__/test-runner.test.js +0 -64
  238. package/dist/scripts/utils/__tests__/test-runner.test.js.map +0 -1
  239. package/dist/src/__tests__/cli.test.d.ts +0 -5
  240. package/dist/src/__tests__/cli.test.d.ts.map +0 -1
  241. package/dist/src/__tests__/cli.test.js +0 -58
  242. package/dist/src/__tests__/cli.test.js.map +0 -1
  243. package/dist/src/__tests__/integration/internationalization.test.d.ts +0 -8
  244. package/dist/src/__tests__/integration/internationalization.test.d.ts.map +0 -1
  245. package/dist/src/__tests__/integration/internationalization.test.js +0 -333
  246. package/dist/src/__tests__/integration/internationalization.test.js.map +0 -1
  247. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +0 -5
  248. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +0 -1
  249. package/dist/src/__tests__/integration/setup/claude-agent.test.js +0 -122
  250. package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +0 -1
  251. package/dist/src/__tests__/integration/setup/claude.test.d.ts +0 -5
  252. package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +0 -1
  253. package/dist/src/__tests__/integration/setup/claude.test.js +0 -193
  254. package/dist/src/__tests__/integration/setup/claude.test.js.map +0 -1
  255. package/dist/src/__tests__/integration/setup/cursor.test.d.ts +0 -5
  256. package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +0 -1
  257. package/dist/src/__tests__/integration/setup/cursor.test.js +0 -166
  258. package/dist/src/__tests__/integration/setup/cursor.test.js.map +0 -1
  259. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +0 -32
  260. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +0 -1
  261. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +0 -72
  262. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +0 -1
  263. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +0 -38
  264. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +0 -1
  265. package/dist/src/__tests__/integration/setup/helpers/test-project.js +0 -83
  266. package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +0 -1
  267. package/dist/src/__tests__/integration/setup/init.test.d.ts +0 -5
  268. package/dist/src/__tests__/integration/setup/init.test.d.ts.map +0 -1
  269. package/dist/src/__tests__/integration/setup/init.test.js +0 -352
  270. package/dist/src/__tests__/integration/setup/init.test.js.map +0 -1
  271. package/dist/src/__tests__/integration/setup/validation.test.d.ts +0 -5
  272. package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +0 -1
  273. package/dist/src/__tests__/integration/setup/validation.test.js +0 -301
  274. package/dist/src/__tests__/integration/setup/validation.test.js.map +0 -1
  275. package/dist/src/commands/__tests__/init.test.d.ts +0 -5
  276. package/dist/src/commands/__tests__/init.test.d.ts.map +0 -1
  277. package/dist/src/commands/__tests__/init.test.js +0 -255
  278. package/dist/src/commands/__tests__/init.test.js.map +0 -1
  279. package/dist/src/commands/__tests__/migrate.test.d.ts +0 -5
  280. package/dist/src/commands/__tests__/migrate.test.d.ts.map +0 -1
  281. package/dist/src/commands/__tests__/migrate.test.js +0 -216
  282. package/dist/src/commands/__tests__/migrate.test.js.map +0 -1
  283. package/scripts/create-project.ts +0 -386
  284. package/scripts/list-projects.ts +0 -112
@@ -1,323 +0,0 @@
1
- /**
2
- * spec-impl-workflow.ts のテスト
3
- */
4
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
5
- // モジュールのモック
6
- vi.mock('dotenv', () => ({ config: vi.fn() }));
7
- // JIRAClientをモック
8
- const mockTransitionIssue = vi.fn();
9
- const mockAddComment = vi.fn();
10
- class MockJIRAClient {
11
- transitionIssue = mockTransitionIssue;
12
- addComment = mockAddComment;
13
- }
14
- vi.mock('../jira-sync.js', () => ({
15
- JIRAClient: MockJIRAClient,
16
- }));
17
- // config-loaderをモック
18
- vi.mock('../utils/config-loader.js', () => ({
19
- getConfig: vi.fn(() => ({
20
- jira: {
21
- statusMapping: {
22
- inProgress: 'In Progress',
23
- readyForReview: 'Ready for Review',
24
- },
25
- },
26
- })),
27
- }));
28
- // project-metaをモック
29
- vi.mock('../utils/project-meta.js', () => ({
30
- getRepositoryInfo: vi.fn(() => 'owner/repo'),
31
- }));
32
- // spec-loaderをモック
33
- const mockGetJiraInfoFromSpec = vi.fn();
34
- const mockCheckJiraInfoStatus = vi.fn();
35
- vi.mock('../utils/spec-loader.js', () => ({
36
- getJiraInfoFromSpec: (...args) => mockGetJiraInfoFromSpec(...args),
37
- checkJiraInfoStatus: (...args) => mockCheckJiraInfoStatus(...args),
38
- }));
39
- // Octokitをモック
40
- const mockPullsCreate = vi.fn();
41
- class MockOctokit {
42
- pulls = {
43
- create: mockPullsCreate,
44
- };
45
- }
46
- vi.mock('@octokit/rest', () => ({
47
- Octokit: MockOctokit,
48
- }));
49
- describe('spec-impl-workflow', () => {
50
- beforeEach(() => {
51
- vi.clearAllMocks();
52
- // 環境変数の設定
53
- process.env.ATLASSIAN_URL = 'https://test.atlassian.net';
54
- process.env.ATLASSIAN_EMAIL = 'test@example.com';
55
- process.env.ATLASSIAN_API_TOKEN = 'test-token';
56
- process.env.GITHUB_TOKEN = 'github-token';
57
- });
58
- afterEach(() => {
59
- vi.restoreAllMocks();
60
- delete process.env.ATLASSIAN_URL;
61
- delete process.env.ATLASSIAN_EMAIL;
62
- delete process.env.ATLASSIAN_API_TOKEN;
63
- delete process.env.GITHUB_TOKEN;
64
- });
65
- // ==========================================================================
66
- // 新 API (runSpecImplStart, runSpecImplComplete)
67
- // ==========================================================================
68
- describe('runSpecImplStart', () => {
69
- it('spec.json から JIRA 情報を取得して Epic と Story を進行中に移動', async () => {
70
- mockGetJiraInfoFromSpec.mockReturnValue({
71
- epicKey: 'PROJ-123',
72
- storyKeys: ['PROJ-124'],
73
- firstStoryKey: 'PROJ-124',
74
- projectKey: 'PROJ',
75
- epicUrl: 'https://test.atlassian.net/browse/PROJ-123',
76
- });
77
- mockCheckJiraInfoStatus.mockReturnValue({
78
- hasJiraInfo: true,
79
- hasEpic: true,
80
- hasStories: true,
81
- missing: [],
82
- });
83
- mockTransitionIssue.mockResolvedValue(undefined);
84
- const { runSpecImplStart } = await import('../spec-impl-workflow.js');
85
- const result = await runSpecImplStart({
86
- featureName: 'user-auth',
87
- });
88
- expect(mockGetJiraInfoFromSpec).toHaveBeenCalledWith('user-auth', process.cwd());
89
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-123', 'In Progress');
90
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-124', 'In Progress');
91
- expect(result.jiraInfo).toBeTruthy();
92
- expect(result.jiraInfo?.epicKey).toBe('PROJ-123');
93
- });
94
- it('skipJira=true の場合は JIRA 連携をスキップ', async () => {
95
- mockGetJiraInfoFromSpec.mockReturnValue({
96
- epicKey: null,
97
- storyKeys: [],
98
- firstStoryKey: null,
99
- projectKey: null,
100
- epicUrl: null,
101
- });
102
- mockCheckJiraInfoStatus.mockReturnValue({
103
- hasJiraInfo: false,
104
- hasEpic: false,
105
- hasStories: false,
106
- missing: ['Epic', 'Story'],
107
- });
108
- const { runSpecImplStart } = await import('../spec-impl-workflow.js');
109
- const result = await runSpecImplStart({
110
- featureName: 'user-auth',
111
- skipJira: true,
112
- });
113
- expect(mockTransitionIssue).not.toHaveBeenCalled();
114
- expect(result.jiraInfo).toBeNull();
115
- });
116
- it('JIRA 情報がない場合は JiraInfoNotFoundError をスロー', async () => {
117
- mockGetJiraInfoFromSpec.mockReturnValue({
118
- epicKey: null,
119
- storyKeys: [],
120
- firstStoryKey: null,
121
- projectKey: null,
122
- epicUrl: null,
123
- });
124
- mockCheckJiraInfoStatus.mockReturnValue({
125
- hasJiraInfo: false,
126
- hasEpic: false,
127
- hasStories: false,
128
- missing: ['Epic', 'Story'],
129
- });
130
- const { runSpecImplStart, JiraInfoNotFoundError } = await import('../spec-impl-workflow.js');
131
- await expect(runSpecImplStart({ featureName: 'user-auth' })).rejects.toThrow(JiraInfoNotFoundError);
132
- });
133
- });
134
- describe('runSpecImplComplete', () => {
135
- beforeEach(() => {
136
- mockPullsCreate.mockResolvedValue({
137
- data: {
138
- html_url: 'https://github.com/owner/repo/pull/42',
139
- },
140
- });
141
- });
142
- it('PR 作成、ステータス変更、コメント追加を実行', async () => {
143
- mockGetJiraInfoFromSpec.mockReturnValue({
144
- epicKey: 'PROJ-123',
145
- storyKeys: ['PROJ-124'],
146
- firstStoryKey: 'PROJ-124',
147
- projectKey: 'PROJ',
148
- epicUrl: 'https://test.atlassian.net/browse/PROJ-123',
149
- });
150
- mockCheckJiraInfoStatus.mockReturnValue({
151
- hasJiraInfo: true,
152
- hasEpic: true,
153
- hasStories: true,
154
- missing: [],
155
- });
156
- mockTransitionIssue.mockResolvedValue(undefined);
157
- mockAddComment.mockResolvedValue(undefined);
158
- const { runSpecImplComplete } = await import('../spec-impl-workflow.js');
159
- const result = await runSpecImplComplete({
160
- featureName: 'user-auth',
161
- });
162
- // PR 作成
163
- expect(mockPullsCreate).toHaveBeenCalledWith({
164
- owner: 'owner',
165
- repo: 'repo',
166
- title: 'feat: user-auth',
167
- body: expect.stringContaining('PROJ-123'),
168
- head: 'feature/user-auth',
169
- base: 'main',
170
- });
171
- // ステータス変更
172
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-123', 'Ready for Review');
173
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-124', 'Ready for Review');
174
- // コメント追加
175
- expect(mockAddComment).toHaveBeenCalledWith('PROJ-123', expect.stringContaining('https://github.com/owner/repo/pull/42'));
176
- expect(result.prUrl).toBe('https://github.com/owner/repo/pull/42');
177
- });
178
- it('skipJira=true の場合は JIRA 連携をスキップしつつ PR は作成', async () => {
179
- mockGetJiraInfoFromSpec.mockReturnValue({
180
- epicKey: null,
181
- storyKeys: [],
182
- firstStoryKey: null,
183
- projectKey: null,
184
- epicUrl: null,
185
- });
186
- mockCheckJiraInfoStatus.mockReturnValue({
187
- hasJiraInfo: false,
188
- hasEpic: false,
189
- hasStories: false,
190
- missing: ['Epic', 'Story'],
191
- });
192
- const { runSpecImplComplete } = await import('../spec-impl-workflow.js');
193
- const result = await runSpecImplComplete({
194
- featureName: 'user-auth',
195
- skipJira: true,
196
- });
197
- expect(mockPullsCreate).toHaveBeenCalled();
198
- expect(mockTransitionIssue).not.toHaveBeenCalled();
199
- expect(mockAddComment).not.toHaveBeenCalled();
200
- expect(result.prUrl).toBe('https://github.com/owner/repo/pull/42');
201
- });
202
- it('カスタムブランチ名を使用できる', async () => {
203
- mockGetJiraInfoFromSpec.mockReturnValue({
204
- epicKey: 'PROJ-123',
205
- storyKeys: [],
206
- firstStoryKey: null,
207
- projectKey: 'PROJ',
208
- epicUrl: null,
209
- });
210
- mockCheckJiraInfoStatus.mockReturnValue({
211
- hasJiraInfo: true,
212
- hasEpic: true,
213
- hasStories: false,
214
- missing: ['Story'],
215
- });
216
- mockTransitionIssue.mockResolvedValue(undefined);
217
- const { runSpecImplComplete } = await import('../spec-impl-workflow.js');
218
- await runSpecImplComplete({
219
- featureName: 'user-auth',
220
- branchName: 'custom/branch-name',
221
- });
222
- expect(mockPullsCreate).toHaveBeenCalledWith(expect.objectContaining({
223
- head: 'custom/branch-name',
224
- }));
225
- });
226
- });
227
- describe('JiraInfoNotFoundError', () => {
228
- it('正しいエラーメッセージを持つ', async () => {
229
- const { JiraInfoNotFoundError } = await import('../spec-impl-workflow.js');
230
- const error = new JiraInfoNotFoundError('user-auth', ['Epic', 'Story']);
231
- expect(error.name).toBe('JiraInfoNotFoundError');
232
- expect(error.featureName).toBe('user-auth');
233
- expect(error.missing).toEqual(['Epic', 'Story']);
234
- expect(error.message).toContain('user-auth');
235
- expect(error.message).toContain('Epic, Story');
236
- expect(error.message).toContain('michi jira:sync');
237
- });
238
- });
239
- // ==========================================================================
240
- // 旧 API(後方互換性のため維持、非推奨)
241
- // ==========================================================================
242
- describe('onSpecImplStart (deprecated)', () => {
243
- it('JIRAを進行中に移動する', async () => {
244
- mockTransitionIssue.mockResolvedValueOnce(undefined);
245
- const { onSpecImplStart } = await import('../spec-impl-workflow.js');
246
- await onSpecImplStart({
247
- featureName: 'user-auth',
248
- jiraKey: 'PROJ-123',
249
- });
250
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-123', 'In Progress');
251
- });
252
- it('JIRA認証情報が不足している場合はエラー', async () => {
253
- delete process.env.ATLASSIAN_API_TOKEN;
254
- // モジュールを再インポート
255
- vi.resetModules();
256
- const { onSpecImplStart } = await import('../spec-impl-workflow.js');
257
- await expect(onSpecImplStart({
258
- featureName: 'user-auth',
259
- jiraKey: 'PROJ-123',
260
- })).rejects.toThrow(/Missing JIRA credentials/);
261
- });
262
- });
263
- describe('onSpecImplEnd', () => {
264
- beforeEach(() => {
265
- // PRの作成をモック
266
- mockPullsCreate.mockResolvedValue({
267
- data: {
268
- html_url: 'https://github.com/owner/repo/pull/42',
269
- },
270
- });
271
- });
272
- it('PR作成、ステータス変更、コメント追加を実行', async () => {
273
- mockTransitionIssue.mockResolvedValueOnce(undefined);
274
- mockAddComment.mockResolvedValueOnce(undefined);
275
- const { onSpecImplEnd } = await import('../spec-impl-workflow.js');
276
- const result = await onSpecImplEnd({
277
- featureName: 'user-auth',
278
- jiraKey: 'PROJ-123',
279
- });
280
- // PR URLが返される
281
- expect(result.prUrl).toBe('https://github.com/owner/repo/pull/42');
282
- // PR作成の検証
283
- expect(mockPullsCreate).toHaveBeenCalledWith({
284
- owner: 'owner',
285
- repo: 'repo',
286
- title: 'feat: user-auth',
287
- body: expect.stringContaining('PROJ-123'),
288
- head: 'feature/user-auth',
289
- base: 'main',
290
- });
291
- // JIRAステータス変更の検証
292
- expect(mockTransitionIssue).toHaveBeenCalledWith('PROJ-123', 'Ready for Review');
293
- // コメント追加の検証
294
- expect(mockAddComment).toHaveBeenCalledWith('PROJ-123', expect.stringContaining('https://github.com/owner/repo/pull/42'));
295
- });
296
- it('カスタムブランチ名を使用できる', async () => {
297
- mockTransitionIssue.mockResolvedValueOnce(undefined);
298
- mockAddComment.mockResolvedValueOnce(undefined);
299
- const { onSpecImplEnd } = await import('../spec-impl-workflow.js');
300
- await onSpecImplEnd({
301
- featureName: 'user-auth',
302
- jiraKey: 'PROJ-123',
303
- branchName: 'custom/branch-name',
304
- });
305
- expect(mockPullsCreate).toHaveBeenCalledWith(expect.objectContaining({
306
- head: 'custom/branch-name',
307
- }));
308
- });
309
- it('GitHub認証情報が不足している場合はエラー', async () => {
310
- delete process.env.GITHUB_TOKEN;
311
- vi.resetModules();
312
- const { onSpecImplEnd } = await import('../spec-impl-workflow.js');
313
- await expect(onSpecImplEnd({
314
- featureName: 'user-auth',
315
- jiraKey: 'PROJ-123',
316
- })).rejects.toThrow(/Missing GitHub credentials/);
317
- });
318
- // 注意: 旧 API (onSpecImplEnd) は JIRA エラーをキャッチせずスローします。
319
- // 新 API (runSpecImplComplete) は JIRA エラーを警告として扱い、PR URL を返します。
320
- // 旧 API を使用する場合は、呼び出し側でエラーハンドリングが必要です。
321
- });
322
- });
323
- //# sourceMappingURL=spec-impl-workflow.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-impl-workflow.test.js","sourceRoot":"","sources":["../../../scripts/__tests__/spec-impl-workflow.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * spec-loader.ts のテスト
3
- */
4
- export {};
5
- //# sourceMappingURL=spec-loader.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-loader.test.d.ts","sourceRoot":"","sources":["../../../scripts/__tests__/spec-loader.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,153 +0,0 @@
1
- /**
2
- * spec-loader.ts のテスト
3
- */
4
- import { describe, it, expect, vi, beforeEach } from 'vitest';
5
- // spec-updater をモック
6
- vi.mock('../utils/spec-updater.js', () => ({
7
- loadSpecJson: vi.fn(),
8
- }));
9
- import { loadSpecJson } from '../utils/spec-updater.js';
10
- import { getJiraInfoFromSpec, checkJiraInfoStatus, canIntegrateWithJira, } from '../utils/spec-loader.js';
11
- const mockLoadSpecJson = vi.mocked(loadSpecJson);
12
- describe('spec-loader', () => {
13
- beforeEach(() => {
14
- vi.clearAllMocks();
15
- });
16
- describe('getJiraInfoFromSpec', () => {
17
- it('すべての JIRA 情報がある場合に正しく取得する', () => {
18
- mockLoadSpecJson.mockReturnValue({
19
- jira: {
20
- epicKey: 'PROJ-123',
21
- storyKeys: ['PROJ-124', 'PROJ-125'],
22
- projectKey: 'PROJ',
23
- epicUrl: 'https://test.atlassian.net/browse/PROJ-123',
24
- },
25
- });
26
- const result = getJiraInfoFromSpec('user-auth');
27
- expect(mockLoadSpecJson).toHaveBeenCalledWith('user-auth', process.cwd());
28
- expect(result).toEqual({
29
- epicKey: 'PROJ-123',
30
- storyKeys: ['PROJ-124', 'PROJ-125'],
31
- firstStoryKey: 'PROJ-124',
32
- projectKey: 'PROJ',
33
- epicUrl: 'https://test.atlassian.net/browse/PROJ-123',
34
- });
35
- });
36
- it('JIRA 情報がない場合は null を返す', () => {
37
- mockLoadSpecJson.mockReturnValue({});
38
- const result = getJiraInfoFromSpec('user-auth');
39
- expect(result).toEqual({
40
- epicKey: null,
41
- storyKeys: [],
42
- firstStoryKey: null,
43
- projectKey: null,
44
- epicUrl: null,
45
- });
46
- });
47
- it('Story のみの場合', () => {
48
- mockLoadSpecJson.mockReturnValue({
49
- jira: {
50
- storyKeys: ['PROJ-124'],
51
- },
52
- });
53
- const result = getJiraInfoFromSpec('user-auth');
54
- expect(result).toEqual({
55
- epicKey: null,
56
- storyKeys: ['PROJ-124'],
57
- firstStoryKey: 'PROJ-124',
58
- projectKey: null,
59
- epicUrl: null,
60
- });
61
- });
62
- it('Epic のみの場合', () => {
63
- mockLoadSpecJson.mockReturnValue({
64
- jira: {
65
- epicKey: 'PROJ-123',
66
- },
67
- });
68
- const result = getJiraInfoFromSpec('user-auth');
69
- expect(result).toEqual({
70
- epicKey: 'PROJ-123',
71
- storyKeys: [],
72
- firstStoryKey: null,
73
- projectKey: null,
74
- epicUrl: null,
75
- });
76
- });
77
- it('カスタム projectRoot を指定できる', () => {
78
- mockLoadSpecJson.mockReturnValue({ jira: { epicKey: 'PROJ-123' } });
79
- getJiraInfoFromSpec('user-auth', '/custom/path');
80
- expect(mockLoadSpecJson).toHaveBeenCalledWith('user-auth', '/custom/path');
81
- });
82
- });
83
- describe('checkJiraInfoStatus', () => {
84
- it('すべての JIRA 情報がある場合', () => {
85
- mockLoadSpecJson.mockReturnValue({
86
- jira: {
87
- epicKey: 'PROJ-123',
88
- storyKeys: ['PROJ-124'],
89
- },
90
- });
91
- const result = checkJiraInfoStatus('user-auth');
92
- expect(result).toEqual({
93
- hasJiraInfo: true,
94
- hasEpic: true,
95
- hasStories: true,
96
- missing: [],
97
- });
98
- });
99
- it('JIRA 情報がまったくない場合', () => {
100
- mockLoadSpecJson.mockReturnValue({});
101
- const result = checkJiraInfoStatus('user-auth');
102
- expect(result).toEqual({
103
- hasJiraInfo: false,
104
- hasEpic: false,
105
- hasStories: false,
106
- missing: ['Epic', 'Story'],
107
- });
108
- });
109
- it('Epic のみがある場合', () => {
110
- mockLoadSpecJson.mockReturnValue({
111
- jira: { epicKey: 'PROJ-123' },
112
- });
113
- const result = checkJiraInfoStatus('user-auth');
114
- expect(result).toEqual({
115
- hasJiraInfo: true,
116
- hasEpic: true,
117
- hasStories: false,
118
- missing: ['Story'],
119
- });
120
- });
121
- it('Story のみがある場合', () => {
122
- mockLoadSpecJson.mockReturnValue({
123
- jira: { storyKeys: ['PROJ-124'] },
124
- });
125
- const result = checkJiraInfoStatus('user-auth');
126
- expect(result).toEqual({
127
- hasJiraInfo: true,
128
- hasEpic: false,
129
- hasStories: true,
130
- missing: ['Epic'],
131
- });
132
- });
133
- });
134
- describe('canIntegrateWithJira', () => {
135
- it('Epic がある場合は連携可能', () => {
136
- mockLoadSpecJson.mockReturnValue({
137
- jira: { epicKey: 'PROJ-123' },
138
- });
139
- expect(canIntegrateWithJira('user-auth')).toBe(true);
140
- });
141
- it('Epic がない場合は連携不可', () => {
142
- mockLoadSpecJson.mockReturnValue({
143
- jira: { storyKeys: ['PROJ-124'] },
144
- });
145
- expect(canIntegrateWithJira('user-auth')).toBe(false);
146
- });
147
- it('JIRA 情報がない場合は連携不可', () => {
148
- mockLoadSpecJson.mockReturnValue({});
149
- expect(canIntegrateWithJira('user-auth')).toBe(false);
150
- });
151
- });
152
- });
153
- //# sourceMappingURL=spec-loader.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-loader.test.js","sourceRoot":"","sources":["../../../scripts/__tests__/spec-loader.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * validate-phase.ts の単体テスト
3
- */
4
- export {};
5
- //# sourceMappingURL=validate-phase.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-phase.test.d.ts","sourceRoot":"","sources":["../../../scripts/__tests__/validate-phase.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}