mirror of
https://github.com/debba/wp-media-rewind.git
synced 2026-08-03 07:29:00 +02:00
feat: initial project setup with CLI, utils, and tests
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { buildMediaUrlRegex, DEFAULT_MEDIA_EXTENSIONS } from "../src/utils/media.js";
|
||||
|
||||
test("default regex matches typical WordPress upload URLs", () => {
|
||||
const re = buildMediaUrlRegex(DEFAULT_MEDIA_EXTENSIONS);
|
||||
const text =
|
||||
"see <img src=\"https://site.test/wp-content/uploads/2020/01/photo.jpg\"/> and " +
|
||||
"https://site.test/wp-content/uploads/2020/01/doc.pdf?v=2 and ignore https://site.test/page";
|
||||
const matches = text.match(re) ?? [];
|
||||
assert.deepEqual(matches, [
|
||||
"https://site.test/wp-content/uploads/2020/01/photo.jpg",
|
||||
"https://site.test/wp-content/uploads/2020/01/doc.pdf?v=2",
|
||||
]);
|
||||
});
|
||||
|
||||
test("regex is case-insensitive on extension", () => {
|
||||
const re = buildMediaUrlRegex(["jpg"]);
|
||||
assert.ok(re.test("https://x.test/a.JPG"));
|
||||
});
|
||||
|
||||
test("regex respects custom extensions only", () => {
|
||||
const re = buildMediaUrlRegex(["xyz"]);
|
||||
assert.equal("https://x.test/a.jpg".match(re), null);
|
||||
assert.ok(re.test("https://x.test/a.xyz"));
|
||||
});
|
||||
|
||||
test("buildMediaUrlRegex throws on empty list", () => {
|
||||
assert.throws(() => buildMediaUrlRegex([]), /at least one extension/);
|
||||
});
|
||||
|
||||
test("regex stops at quotes and whitespace", () => {
|
||||
const re = buildMediaUrlRegex(["png"]);
|
||||
const text = `'https://x.test/a.png' "https://x.test/b.png"`;
|
||||
const matches = text.match(re) ?? [];
|
||||
assert.deepEqual(matches, ["https://x.test/a.png", "https://x.test/b.png"]);
|
||||
});
|
||||
Reference in New Issue
Block a user