Files
ausboss-ComfyUI-AusBoss/tests/save_image_naming.test.mjs
T

46 lines
2.7 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
namingMode, previewFolder, previewName, stripImageExtension, tagsEnabled,
} from "../js/shared/save_image_naming.mjs";
const now = new Date(2026, 8, 3, 14, 5, 9);
test("namingMode: linked beats exact beats local", () => {
assert.equal(namingMode({ filenameLinked: true, exactName: "x" }), "linked");
assert.equal(namingMode({ filenameLinked: false, exactName: " photo " }), "exact");
assert.equal(namingMode({ filenameLinked: false, exactName: "" }), "local");
});
test("previewName composes prefix and tags in the backend's order", () => {
const base = { filename_prefix: "sets/shot", format: "png", exact_name: "", name_counter: true };
assert.equal(previewName(base, { now }), "shot_#####.png");
assert.equal(previewName({ ...base, name_date: true, name_time: true, name_size: true, name_batch: true }, { now }), "shot_2026-09-03_14-05-09_WxH_#####_b###.png");
assert.equal(previewName({ ...base, name_size: true, name_counter: false }, { now, size: { width: 1024, height: 1536 } }), "shot_1024x1536.png");
assert.equal(previewName({ ...base, format: "webp lossless" }, { now }), "shot_#####.webp");
assert.equal(previewName({ ...base, filename_prefix: "" }, { now }), "image_#####.png");
});
test("previewName in exact and linked modes", () => {
assert.equal(previewName({ filename_prefix: "x", format: "jxl lossless", exact_name: "photo123.jpg" }), "photo123.jxl");
assert.equal(previewName({ filename_prefix: "x", format: "png", exact_name: "", filenameLinked: true, name_counter: true }), "{{filename}}.png");
});
test("previewFolder joins the output folder, the folder field and the prefix's subfolders", () => {
assert.equal(previewFolder({ output_dir: "", filename_prefix: "shot" }), "ComfyUI/output/");
assert.equal(previewFolder({ output_dir: "datasets/portraits", filename_prefix: "sets/shot" }), "ComfyUI/output/datasets/portraits/sets/");
for (const outside of ["/srv/elsewhere/", "C:\\Pictures", "~/Pictures", "sets/../..", "\\\\host\\share"]) {
assert.equal(previewFolder({ output_dir: outside, filename_prefix: "shot" }), "Not saved: use a subfolder of ComfyUI/output");
}
assert.equal(previewFolder({ output_dir: "", filename_prefix: "sets/shot", filenameLinked: true }), "ComfyUI/output/");
});
test("tags only decorate a local name; extensions strip like the backend", () => {
assert.equal(tagsEnabled({ exact_name: "", filenameLinked: false }), true);
assert.equal(tagsEnabled({ exact_name: "photo" }), false);
assert.equal(tagsEnabled({ exact_name: "", filenameLinked: true }), false);
assert.equal(stripImageExtension("photo.JPG"), "photo");
assert.equal(stripImageExtension("photo.v2"), "photo.v2");
});