mirror of
https://github.com/logos-storage/logos-storage-marketplace-ui.git
synced 2026-01-08 08:23:07 +00:00
301 lines
8.9 KiB
TypeScript
301 lines
8.9 KiB
TypeScript
import { assert, describe, it } from "vitest";
|
|
import { FilesUtils } from "./files.utils";
|
|
|
|
describe("files", () => {
|
|
it("sorts by name", async () => {
|
|
const a = {
|
|
cid: "", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
const b = {
|
|
cid: "", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "b",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
|
|
const items = [a, b,]
|
|
|
|
const descSorted = items.slice().sort(FilesUtils.sortByName("desc"))
|
|
|
|
assert.deepEqual(descSorted, [b, a]);
|
|
|
|
const ascSorted = items.slice().sort(FilesUtils.sortByName("asc"))
|
|
|
|
assert.deepEqual(ascSorted, [a, b]);
|
|
});
|
|
|
|
it("sorts by size", async () => {
|
|
const a = {
|
|
cid: "", manifest: {
|
|
datasetSize: 1000,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
const b = {
|
|
cid: "", manifest: {
|
|
datasetSize: 2000,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "b",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
|
|
const items = [a, b,]
|
|
|
|
const descSorted = items.slice().sort(FilesUtils.sortBySize("desc"))
|
|
|
|
assert.deepEqual(descSorted, [b, a]);
|
|
|
|
const ascSorted = items.slice().sort(FilesUtils.sortBySize("asc"))
|
|
|
|
assert.deepEqual(ascSorted, [a, b]);
|
|
});
|
|
|
|
it("sorts by date", async () => {
|
|
const now = new Date()
|
|
|
|
const a = {
|
|
cid: "", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: now.getTime()
|
|
}
|
|
}
|
|
|
|
now.setDate(now.getDate() - 1)
|
|
|
|
const b = {
|
|
cid: "", manifest: {
|
|
datasetSize: 2000,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "b",
|
|
mimetype: null,
|
|
uploadedAt: now.getTime()
|
|
}
|
|
}
|
|
|
|
const items = [a, b,]
|
|
|
|
const descSorted = items.slice().sort(FilesUtils.sortBySize("desc"))
|
|
|
|
assert.deepEqual(descSorted, [b, a]);
|
|
|
|
const ascSorted = items.slice().sort(FilesUtils.sortBySize("asc"))
|
|
|
|
assert.deepEqual(ascSorted, [a, b]);
|
|
});
|
|
|
|
it("returns true when a file is an image", async () => {
|
|
assert.deepEqual(FilesUtils.isImage("image/jpg"), true);
|
|
assert.deepEqual(FilesUtils.isImage("video/mp4"), false);
|
|
assert.deepEqual(FilesUtils.isImage(null), false);
|
|
});
|
|
|
|
it("returns true when a file is a video", async () => {
|
|
assert.deepEqual(FilesUtils.isVideo("video/mp4"), true);
|
|
assert.deepEqual(FilesUtils.isVideo("image/jpg"), false);
|
|
assert.deepEqual(FilesUtils.isImage(null), false);
|
|
});
|
|
|
|
it("returns true when a file is an archive", async () => {
|
|
assert.deepEqual(FilesUtils.isArchive("application/zip"), true);
|
|
assert.deepEqual(FilesUtils.isArchive("video/mp4"), false);
|
|
assert.deepEqual(FilesUtils.isArchive(null), false);
|
|
});
|
|
|
|
it("gets the type of a file", async () => {
|
|
assert.deepEqual(FilesUtils.type("application/zip"), "archive");
|
|
});
|
|
|
|
it("fallbacks to document when the mimetype is not known", async () => {
|
|
assert.deepEqual(FilesUtils.type("application/octet-stream"), "document");
|
|
});
|
|
|
|
it("removes a cid from a folder", async () => {
|
|
const folders = [["favorites", ["123", "456"]]] satisfies [string, string[]][]
|
|
const folder = "favorites"
|
|
const cid = "456"
|
|
|
|
assert.deepEqual(FilesUtils.removeCidFromFolder(folders, folder, cid), [["favorites", ["123"]]]);
|
|
});
|
|
|
|
it("adds a cid from to a folder", async () => {
|
|
const folders = [["favorites", ["123"]]] satisfies [string, string[]][]
|
|
const folder = "favorites"
|
|
const cid = "456"
|
|
|
|
assert.deepEqual(FilesUtils.addCidToFolder(folders, folder, cid), [["favorites", ["123", cid]]]);
|
|
});
|
|
|
|
it("returns true when the folder exists", async () => {
|
|
const folders = [["favorites", []]] satisfies [string, string[]][]
|
|
|
|
assert.deepEqual(FilesUtils.exists(folders, "favorites"), true);
|
|
});
|
|
|
|
it("toggles filter", async () => {
|
|
const filters = FilesUtils.toggleFilters(["images"], "archives")
|
|
|
|
assert.deepEqual(filters, ["images", "archives"]);
|
|
assert.deepEqual(FilesUtils.toggleFilters(filters, "archives"), ["images"]);
|
|
});
|
|
|
|
it("list all files when the first item is selected", async () => {
|
|
const folders = [["favorites", ["123"]], ["hello", ["456"]]] satisfies [string, string[]][]
|
|
const files = [
|
|
{
|
|
cid: "123", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
},
|
|
{
|
|
cid: "456",
|
|
manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
assert.deepEqual(FilesUtils.listInFolder(files, folders, 0), files);
|
|
});
|
|
|
|
it("list all files in favorites", async () => {
|
|
const folders = [["favorites", ["123"]], ["hello", ["456"]]] satisfies [string, string[]][]
|
|
const files = [
|
|
{
|
|
cid: "123", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
},
|
|
{
|
|
cid: "456",
|
|
manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
assert.deepEqual(FilesUtils.listInFolder(files, folders, 1), [files[0]]);
|
|
});
|
|
|
|
it("returns all files when no filter is selected", async () => {
|
|
const files = [
|
|
{
|
|
cid: "123", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
},
|
|
{
|
|
cid: "456",
|
|
manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: null,
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
assert.deepEqual(FilesUtils.applyFilters(files, []), files);
|
|
});
|
|
|
|
it("returns apply filter by mimetype", async () => {
|
|
const files = [
|
|
{
|
|
cid: "123", manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: "image/jpg",
|
|
uploadedAt: 0
|
|
}
|
|
},
|
|
{
|
|
cid: "456",
|
|
manifest: {
|
|
datasetSize: 0,
|
|
blockSize: 0,
|
|
protected: false,
|
|
treeCid: "",
|
|
filename: "a",
|
|
mimetype: "application/zip",
|
|
uploadedAt: 0
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
assert.deepEqual(FilesUtils.applyFilters(files, ["archive"]), [files[1]]);
|
|
});
|
|
|
|
it("formats date", async () => {
|
|
const utcDate = new Date(Date.UTC(2024, 10, 20, 11, 36));
|
|
|
|
assert.equal(FilesUtils.formatDate(1732102577), "20 Nov 2024, " + utcDate.getHours() + ":" + utcDate.getMinutes());
|
|
})
|
|
}) |