Skip to main content
Glama
issue-parser.test.ts3.02 kB
import { IssueParser } from '../issue-parser'; describe('IssueParser', () => { describe('extractIssueReferences', () => { it('should extract standard Linear issue references', () => { const text = 'Fix auth issue (OPS-123) and update docs for FIRM-456'; const references = IssueParser.extractIssueReferences(text); expect(references).toHaveLength(2); expect(references[0]).toEqual({ identifier: 'OPS-123', team: 'OPS', number: 123 }); expect(references[1]).toEqual({ identifier: 'FIRM-456', team: 'FIRM', number: 456 }); }); it('should handle duplicate references', () => { const text = 'Working on OPS-123, related to OPS-123'; const references = IssueParser.extractIssueReferences(text); expect(references).toHaveLength(1); expect(references[0].identifier).toBe('OPS-123'); }); it('should extract from multiple sources', () => { const sources = { commitMessage: 'Fix: Resolve auth issue (OPS-123)', commitBody: 'This also addresses FIRM-789', prTitle: 'Update authentication flow', prBody: 'Closes SOFT-456\n\nRelated to OPS-123' }; const references = IssueParser.extractFromMultipleSources(sources); expect(references).toHaveLength(3); const identifiers = references.map(r => r.identifier); expect(identifiers).toContain('OPS-123'); expect(identifiers).toContain('FIRM-789'); expect(identifiers).toContain('SOFT-456'); }); }); describe('containsClosingKeyword', () => { it('should detect closing keywords', () => { expect(IssueParser.containsClosingKeyword('Fixes OPS-123', 'OPS-123')).toBe(true); expect(IssueParser.containsClosingKeyword('This closes FIRM-456', 'FIRM-456')).toBe(true); expect(IssueParser.containsClosingKeyword('Resolves issue SOFT-789', 'SOFT-789')).toBe(true); expect(IssueParser.containsClosingKeyword('Related to OPS-123', 'OPS-123')).toBe(false); }); }); describe('extractWithGitHubReferences', () => { it('should extract GitHub-style references with default team', () => { const text = 'Fixes #123 and closes #456'; const references = IssueParser.extractWithGitHubReferences(text, 'OPS'); expect(references).toHaveLength(2); expect(references[0]).toEqual({ identifier: 'OPS-123', team: 'OPS', number: 123 }); expect(references[1]).toEqual({ identifier: 'OPS-456', team: 'OPS', number: 456 }); }); it('should handle mixed references', () => { const text = 'Fixes #123 and FIRM-789'; const references = IssueParser.extractWithGitHubReferences(text, 'OPS'); expect(references).toHaveLength(2); const identifiers = references.map(r => r.identifier); expect(identifiers).toContain('OPS-123'); expect(identifiers).toContain('FIRM-789'); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bleugreen/linear-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server