blob: 9400debaa3ffa8601bf48ea7ec402fc118a26f01 [file] [log] [blame] [edit]
/* This file is a part of @mdn/browser-compat-data
* See LICENSE file for more information. */
import assert from 'node:assert/strict';
import { processData } from './test-links.js';
describe('test-links', () => {
it('should process Bugzilla bug links correctly', async () => {
const rawData = 'https://bugzilla.mozilla.org/show_bug.cgi?id=12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://bugzil.la/12345');
});
it('should process new Chromium bug links correctly', async () => {
const rawData = 'https://issues.chromium.org/issues/12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://crbug.com/12345');
});
it('should process old Chromium bug links correctly', async () => {
const rawData =
'https://bugs.chromium.org/p/chromium/issues/detail?id=12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://crbug.com/12345');
});
it('should process old Chromium bug links with categories correctly', async () => {
const rawData =
'https://bugs.chromium.org/p/category/issues/detail?id=12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://crbug.com/category/12345');
});
it('should process Chromium revision links correctly', async () => {
const rawData = 'https://chromium.googlesource.com/chromium/src/+/12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://crrev.com/12345');
});
it('should process WebKit links correctly', async () => {
const rawData = 'https://bugs.webkit.org/show_bug.cgi?id=12345';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://webkit.org/b/12345');
});
it('should process multiple links correctly', async () => {
const rawData =
'https://bugs.chromium.org/p/chromium/issues/detail?id=12345\n' +
'https://bugs.webkit.org/show_bug.cgi?id=12345';
const errors = await processData(rawData);
assert.equal(errors.length, 2);
assert.equal(errors[0].issue, 'Use shortenable URL');
assert.equal(errors[0].expected, 'https://crbug.com/12345');
assert.equal(errors[1].issue, 'Use shortenable URL');
assert.equal(errors[1].expected, 'https://webkit.org/b/12345');
});
it('should process bug links correctly', async () => {
const rawData = '[Bug 12345](http://bugzil.la/12345)';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use HTTPS for bug links');
assert.equal(errors[0].expected, 'https://bugzil.la/12345');
});
it('should process bug links with "bug" word outside correctly', async () => {
const rawData = 'bug [12345](https://bugzil.la/12345)';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Move word "bug" into link text');
assert.equal(errors[0].expected, '[bug 12345](https://bugzil.la/12345)');
});
it('should process bug links with capital "Bug"', async () => {
const rawData = '[Bug 12345](https://bugzil.la/12345)';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use lowercase "bug" word within sentence');
assert.equal(errors[0].expected, 'bug 12345');
});
it('should process bug links with non-standard bug text', async () => {
const rawData = 'see [Chrome bug 40067890](https://crbug.com/40067890).';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use standard link text');
assert.equal(errors[0].expected, 'bug 40067890');
});
describe('MDN links', () => {
it('should process MDN links on HTTP correctly', async () => {
const rawData = '"http://developer.mozilla.org/docs/Web/API/console"';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use HTTPS MDN URL');
assert.equal(
errors[0].actual,
'http://developer.mozilla.org/docs/Web/API/console',
);
assert.equal(
errors[0].expected,
'https://developer.mozilla.org/docs/Web/API/console',
);
});
it('should process MDN links on subdomain correctly', async () => {
const rawData =
'"https://allizom.developer.mozilla.org/docs/Web/API/console"';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use correct MDN domain');
assert.equal(
errors[0].expected,
'https://developer.mozilla.org/docs/Web/API/console',
);
});
it('should process localized MDN links correctly', async () => {
const rawData =
'"https://developer.mozilla.org/en-US/docs/Web/API/console"';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(errors[0].issue, 'Use non-localized MDN URL');
assert.equal(
errors[0].expected,
'https://developer.mozilla.org/docs/Web/API/console',
);
});
});
describe('Microsoft Developer links', () => {
it('should process Microsoft Developer links correctly', async () => {
const rawData = '"https://developer.microsoft.com/en-us/microsoft-edge"';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(
errors[0].issue,
'Use non-localized Microsoft Developer URL',
);
assert.equal(
errors[0].expected,
'https://developer.microsoft.com/microsoft-edge',
);
});
it('should process localized Microsoft Developer links correctly', async () => {
const rawData = '"https://developer.microsoft.com/fr-fr/microsoft-edge"';
const errors = await processData(rawData);
assert.equal(errors.length, 1);
assert.equal(
errors[0].issue,
'Use non-localized Microsoft Developer URL',
);
assert.equal(
errors[0].expected,
'https://developer.microsoft.com/microsoft-edge',
);
});
});
});