Wrap enriched and skipped ticket keys in markdown links using JIRA_BASE_URL so keys are clickable in the hourly poller room summary. Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
// tests/jiraBrowseUrl.test.js
|
|
|
|
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import {
|
|
getJiraBrowseUrl,
|
|
formatJiraIssueMarkdownLink,
|
|
} from '../utils/jiraBrowseUrl.js';
|
|
|
|
const ORIGINAL_BASE = process.env.JIRA_BASE_URL;
|
|
|
|
test.after(() => {
|
|
if (ORIGINAL_BASE === undefined) {
|
|
delete process.env.JIRA_BASE_URL;
|
|
} else {
|
|
process.env.JIRA_BASE_URL = ORIGINAL_BASE;
|
|
}
|
|
});
|
|
|
|
test('getJiraBrowseUrl builds browse URL from JIRA_BASE_URL', () => {
|
|
process.env.JIRA_BASE_URL = 'https://aeo.atlassian.net/';
|
|
assert.equal(
|
|
getJiraBrowseUrl('AV-123'),
|
|
'https://aeo.atlassian.net/browse/AV-123',
|
|
);
|
|
});
|
|
|
|
test('getJiraBrowseUrl returns null for invalid keys', () => {
|
|
process.env.JIRA_BASE_URL = 'https://aeo.atlassian.net';
|
|
assert.equal(getJiraBrowseUrl(''), null);
|
|
assert.equal(getJiraBrowseUrl('invalid'), null);
|
|
assert.equal(getJiraBrowseUrl('av-123'), null);
|
|
});
|
|
|
|
test('getJiraBrowseUrl returns null when JIRA_BASE_URL is unset', () => {
|
|
delete process.env.JIRA_BASE_URL;
|
|
assert.equal(getJiraBrowseUrl('AV-123'), null);
|
|
});
|
|
|
|
test('formatJiraIssueMarkdownLink returns markdown link when URL is available', () => {
|
|
process.env.JIRA_BASE_URL = 'https://aeo.atlassian.net';
|
|
assert.equal(
|
|
formatJiraIssueMarkdownLink('AV-123'),
|
|
'[AV-123](https://aeo.atlassian.net/browse/AV-123)',
|
|
);
|
|
});
|
|
|
|
test('formatJiraIssueMarkdownLink falls back to backticks when base URL missing', () => {
|
|
delete process.env.JIRA_BASE_URL;
|
|
assert.equal(formatJiraIssueMarkdownLink('AV-123'), '`AV-123`');
|
|
});
|