js-hub / lib /list-models.spec.ts
coyotte508's picture
coyotte508 HF Staff
Add 1 files
21dd449 verified
import { describe, expect, it } from "vitest";
import type { ModelEntry } from "./list-models";
import { listModels } from "./list-models";
describe("listModels", () => {
it("should list models for depth estimation", async () => {
const results: ModelEntry[] = [];
for await (const entry of listModels({
search: { owner: "Intel", task: "depth-estimation" },
})) {
if (typeof entry.downloads === "number") {
entry.downloads = 0;
}
if (typeof entry.likes === "number") {
entry.likes = 0;
}
if (entry.updatedAt instanceof Date && !isNaN(entry.updatedAt.getTime())) {
entry.updatedAt = new Date(0);
}
if (!["Intel/dpt-large", "Intel/dpt-hybrid-midas"].includes(entry.name)) {
expect(entry.task).to.equal("depth-estimation");
continue;
}
results.push(entry);
}
results.sort((a, b) => a.id.localeCompare(b.id));
expect(results).deep.equal([
{
id: "621ffdc136468d709f17e709",
name: "Intel/dpt-large",
private: false,
gated: false,
downloads: 0,
likes: 0,
task: "depth-estimation",
updatedAt: new Date(0),
},
{
id: "638f07977559bf9a2b2b04ac",
name: "Intel/dpt-hybrid-midas",
gated: false,
private: false,
downloads: 0,
likes: 0,
task: "depth-estimation",
updatedAt: new Date(0),
},
]);
});
it("should list indonesian models with gguf format", async () => {
let count = 0;
for await (const entry of listModels({
search: { tags: ["gguf", "id"] },
additionalFields: ["tags"],
limit: 2,
})) {
count++;
expect(entry.tags).to.include("gguf");
expect(entry.tags).to.include("id");
}
expect(count).to.equal(2);
});
it("should search model by name", async () => {
let count = 0;
for await (const entry of listModels({
search: { query: "t5" },
limit: 10,
})) {
count++;
expect(entry.name.toLocaleLowerCase()).to.include("t5");
}
expect(count).to.equal(10);
});
it("should search model by inference provider", async () => {
let count = 0;
for await (const entry of listModels({
search: { inferenceProviders: ["together"] },
additionalFields: ["inferenceProviderMapping"],
limit: 10,
})) {
count++;
if (Array.isArray(entry.inferenceProviderMapping)) {
expect(entry.inferenceProviderMapping.map(({ provider }) => provider)).to.include("together");
}
}
expect(count).to.equal(10);
});
it("should search model by several inference providers", async () => {
let count = 0;
const inferenceProviders = ["together", "replicate"];
for await (const entry of listModels({
search: { inferenceProviders },
additionalFields: ["inferenceProviderMapping"],
limit: 10,
})) {
count++;
if (Array.isArray(entry.inferenceProviderMapping)) {
expect(
entry.inferenceProviderMapping.filter(({ provider }) => inferenceProviders.includes(provider)).length
).toBeGreaterThan(0);
}
}
expect(count).to.equal(10);
});
});