mirror of
https://git.quad4.io/RNS-Things/MeshChatX.git
synced 2026-04-25 11:02:11 +00:00
64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
import { describe, it, expect } from "vitest";
|
|
import {
|
|
isTelemetryOnly,
|
|
hasRenderableContent,
|
|
isImageOnlyMessage,
|
|
collectImageFilesFromDataTransfer,
|
|
extractClipboardImageFiles,
|
|
} from "../../meshchatx/src/frontend/components/messages/conversationMessageHelpers.js";
|
|
|
|
describe("conversationMessageHelpers", () => {
|
|
it("hasRenderableContent detects text and attachments", () => {
|
|
expect(hasRenderableContent({ content: " hi " })).toBe(true);
|
|
expect(hasRenderableContent({ content: "", fields: { image: {} } })).toBe(true);
|
|
expect(hasRenderableContent({ content: " ", fields: {} })).toBe(false);
|
|
});
|
|
|
|
it("isTelemetryOnly when only telemetry fields", () => {
|
|
expect(
|
|
isTelemetryOnly({
|
|
content: "",
|
|
fields: { telemetry: { x: 1 } },
|
|
})
|
|
).toBe(true);
|
|
expect(
|
|
isTelemetryOnly({
|
|
content: "a",
|
|
fields: { telemetry: { x: 1 } },
|
|
})
|
|
).toBe(false);
|
|
});
|
|
|
|
it("isImageOnlyMessage respects shouldHideAutoImageCaption", () => {
|
|
const chatItem = {
|
|
lxmf_message: {
|
|
fields: { image: {} },
|
|
content: "cap",
|
|
},
|
|
};
|
|
expect(isImageOnlyMessage(chatItem, () => true)).toBe(true);
|
|
expect(isImageOnlyMessage(chatItem, () => false)).toBe(false);
|
|
});
|
|
|
|
it("collectImageFilesFromDataTransfer collects image files", () => {
|
|
const f = new File(["x"], "a.png", { type: "image/png" });
|
|
const dt = { files: [f] };
|
|
const out = collectImageFilesFromDataTransfer(dt);
|
|
expect(out.length).toBe(1);
|
|
expect(out[0].type.startsWith("image/")).toBe(true);
|
|
});
|
|
|
|
it("extractClipboardImageFiles reads image items", () => {
|
|
const f = new File(["x"], "c.png", { type: "image/png" });
|
|
const item = {
|
|
kind: "file",
|
|
type: "image/png",
|
|
getAsFile: () => f,
|
|
};
|
|
const ev = { clipboardData: { items: [item] } };
|
|
const files = extractClipboardImageFiles(ev);
|
|
expect(files.length).toBe(1);
|
|
expect(files[0].name).toBe("c.png");
|
|
});
|
|
});
|