|
186 | 186 | (is (nil? (:commit/parents entity))) |
187 | 187 | (is (nil? (:commit/changed-files entity))))) |
188 | 188 |
|
| 189 | +;; --- Issue reference extraction --- |
| 190 | + |
| 191 | +(deftest extract-issue-refs-github-style |
| 192 | + (is (= #{"#123" "#456"} |
| 193 | + (git/extract-issue-refs "fix(auth): resolve login bug (#123) and (#456)")))) |
| 194 | + |
| 195 | +(deftest extract-issue-refs-jira-style |
| 196 | + (is (= #{"PROJ-42" "PROJ-999"} |
| 197 | + (git/extract-issue-refs "PROJ-42 implement feature, see also PROJ-999")))) |
| 198 | + |
| 199 | +(deftest extract-issue-refs-urls |
| 200 | + (is (= #{"https://github.com/foo/bar/issues/123"} |
| 201 | + (git/extract-issue-refs "Closes https://github.com/foo/bar/issues/123")))) |
| 202 | + |
| 203 | +(deftest extract-issue-refs-mixed |
| 204 | + (let [refs (git/extract-issue-refs "Fix #55 (JIRA-100) see https://jira.example.com/browse/JIRA-100")] |
| 205 | + (is (contains? refs "#55")) |
| 206 | + (is (contains? refs "JIRA-100")) |
| 207 | + (is (some #(str/starts-with? % "https://") refs)))) |
| 208 | + |
| 209 | +(deftest extract-issue-refs-none |
| 210 | + (is (nil? (git/extract-issue-refs "chore: bump deps"))) |
| 211 | + (is (nil? (git/extract-issue-refs nil))) |
| 212 | + (is (nil? (git/extract-issue-refs "")))) |
| 213 | + |
| 214 | +(deftest tx-data-includes-issue-refs |
| 215 | + (let [commit {:sha "abc" :parent-shas [] :message "fix(api): handle timeout (#42, PROJ-7)" |
| 216 | + :author-name "A" :author-email "a@x.com" :authored-at #inst "2024-01-01" |
| 217 | + :committer-name "A" :committer-email "a@x.com" :committed-at #inst "2024-01-01" |
| 218 | + :changed-files []} |
| 219 | + tx-data (git/commit->tx-data "test://repo" commit) |
| 220 | + entity (first (filter :git/sha tx-data))] |
| 221 | + (is (= #{"#42" "PROJ-7"} (:commit/issue-refs entity))))) |
| 222 | + |
| 223 | +(deftest tx-data-omits-issue-refs-when-none |
| 224 | + (let [commit {:sha "abc" :parent-shas [] :message "chore: update deps" |
| 225 | + :author-name "A" :author-email "a@x.com" :authored-at #inst "2024-01-01" |
| 226 | + :committer-name "A" :committer-email "a@x.com" :committed-at #inst "2024-01-01" |
| 227 | + :changed-files []} |
| 228 | + tx-data (git/commit->tx-data "test://repo" commit) |
| 229 | + entity (first (filter :git/sha tx-data))] |
| 230 | + (is (nil? (:commit/issue-refs entity))))) |
| 231 | + |
189 | 232 | ;; --- Rename path resolution (regression: Flask import crash) --- |
190 | 233 |
|
191 | 234 | (deftest resolve-rename-path-directory |
|
0 commit comments