diff --git a/src/js/remoteServices.js b/src/js/remoteServices.js index 71dd55f..59ea145 100644 --- a/src/js/remoteServices.js +++ b/src/js/remoteServices.js @@ -118,4 +118,28 @@ export default { ?.textContent?.trim(), projectId: projectIdentifierBySelector(".taskItem.selected .taskItem-titleWrapper-title"), }, + + "gitlab-mr": { + name: "gitlab", + urlPatterns: [ + "https\\://gitlab.com/:org/:group/:projectId/-/merge_requests/:id", + "https\\://gitlab.com/:org/:projectId/-/merge_requests/:id", + ], + description: (document, service, { id }) => { + const title = document.querySelector("h2.title")?.textContent?.trim() + return `#${id} ${title || ""}`.trim() + }, + }, + + "gitlab-issues": { + name: "gitlab", + urlPatterns: [ + "https\\://gitlab.com/:org/:group/:projectId/-/issues/:id", + "https\\://gitlab.com/:org/:projectId/-/issues/:id", + ], + description: (document, service, { id }) => { + const title = document.querySelector("h2.title")?.textContent?.trim() + return `#${id} ${title || ""}`.trim() + }, + }, } diff --git a/test/utils/urlMatcher.test.js b/test/utils/urlMatcher.test.js index 3d00d78..5b84686 100644 --- a/test/utils/urlMatcher.test.js +++ b/test/utils/urlMatcher.test.js @@ -108,6 +108,43 @@ describe("utils", () => { ).id, ).toEqual("1234") }) + + it("should match gitlab-mergerequest url", () => { + const service = matcher( + "https://gitlab.com/testorganisatzion/testproject/-/merge_requests/1", + ) + expect(service.id).toEqual("1") + expect(service.match.id).toEqual("1") + expect(service.name).toEqual("gitlab") + expect(service.projectId).toEqual("testproject") + }) + it("should match gitlab-mergerequest url with group", () => { + const service = matcher( + "https://gitlab.com/testorganisatzion/test-group/testproject/-/merge_requests/1", + ) + expect(service.id).toEqual("1") + expect(service.match.id).toEqual("1") + expect(service.name).toEqual("gitlab") + expect(service.projectId).toEqual("testproject") + }) + + it("should match gitlab-issue url", () => { + const service = matcher("https://gitlab.com/testorganisatzion/testproject/-/issues/1") + expect(service.id).toEqual("1") + expect(service.match.id).toEqual("1") + expect(service.name).toEqual("gitlab") + expect(service.projectId).toEqual("testproject") + }) + + it("should match gitlab-issue url with group", () => { + const service = matcher( + "https://gitlab.com/testorganisatzion/test-group/testproject/-/issues/1", + ) + expect(service.id).toEqual("1") + expect(service.match.id).toEqual("1") + expect(service.name).toEqual("gitlab") + expect(service.projectId).toEqual("testproject") + }) }) describe("createEnhancer", () => {