collabSupport/tests/jiraBrowseUrl.test.js
jmcqueen 9282e9cd0d Link Jira poller summary tickets to browse URLs in Webex.
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>
2026-08-10 15:17:18 -04:00

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`');
});