const test = require("node:test");
const assert = require("node:assert/strict");
const {
extractFileTitleFromUrl,
extractAssetFromApiResponse,
sanitizeMetadataText,
} = require("../lib/wikimedia");
test("extractFileTitleFromUrl supporte les URLs Commons et les fragments media de Wikipedia", () => {
const commonsUrl = "https://commons.wikimedia.org/wiki/File:IBookG3_Palourde2.png";
const wikipediaMediaUrl = "https://en.wikipedia.org/wiki/IBook#/media/File:IBookG3_Palourde2.png";
assert.equal(extractFileTitleFromUrl(commonsUrl), "File:IBookG3_Palourde2.png");
assert.equal(extractFileTitleFromUrl(wikipediaMediaUrl), "File:IBookG3_Palourde2.png");
});
test("sanitizeMetadataText decode le HTML de Commons", () => {
const rawValue = "No machine-readable author provided. Ocmey assumed & credited.";
assert.equal(
sanitizeMetadataText(rawValue),
"No machine-readable author provided. Ocmey assumed & credited."
);
});
test("extractAssetFromApiResponse reconstruit l'attribution et la description", () => {
const response = {
query: {
pages: {
"903939": {
title: "File:IBookG3 Palourde2.png",
imageinfo: [
{
url: "https://upload.wikimedia.org/wikipedia/commons/b/b3/IBookG3_Palourde2.png",
descriptionurl: "https://commons.wikimedia.org/wiki/File:IBookG3_Palourde2.png",
descriptionshorturl: "https://commons.wikimedia.org/w/index.php?curid=903939",
extmetadata: {
ImageDescription: {
value: "iBook G3 Open and Closed",
},
Credit: {
value: "No machine-readable source provided. Own work assumed (based on copyright claims).",
},
Artist: {
value: "No machine-readable author provided. Ocmey assumed (based on copyright claims).",
},
LicenseShortName: {
value: "Public domain",
},
},
},
],
},
},
},
};
const asset = extractAssetFromApiResponse(response);
assert.equal(asset.fileName, "IBookG3_Palourde2.png");
assert.equal(asset.description, "iBook G3 Open and Closed");
assert.equal(
asset.attribution,
"By No machine-readable author provided. Ocmey assumed (based on copyright claims). - No machine-readable source provided. Own work assumed (based on copyright claims)., Public Domain, https://commons.wikimedia.org/w/index.php?curid=903939"
);
});