Skills (#50)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import { readFileSync, readdirSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { buildPackagedSkillStatusEntry, listPackagedSkills } from "@/lib/skills/catalog";
|
||||
import { resolveSkillMarketplaceMetadata } from "@/lib/skills/marketplace";
|
||||
import { readPackagedSkillFiles } from "@/lib/skills/packaged";
|
||||
|
||||
const resolveAssetDir = (packageId: string) => path.join(process.cwd(), "assets/skills", packageId);
|
||||
|
||||
describe("packaged skills", () => {
|
||||
it("keeps packaged skill files synchronized with the asset source files", () => {
|
||||
for (const packagedSkill of listPackagedSkills()) {
|
||||
const assetDir = resolveAssetDir(packagedSkill.packageId);
|
||||
const expectedFiles = readdirSync(assetDir, { withFileTypes: true })
|
||||
.filter((entry) => entry.isFile())
|
||||
.map((entry) => entry.name)
|
||||
.sort();
|
||||
const packagedFiles = readPackagedSkillFiles(packagedSkill.packageId);
|
||||
const packagedRelativePaths = packagedFiles.map((file) => file.relativePath).sort();
|
||||
|
||||
expect(packagedRelativePaths).toEqual(expectedFiles);
|
||||
|
||||
for (const file of packagedFiles) {
|
||||
const assetContent = readFileSync(path.join(assetDir, file.relativePath), "utf8");
|
||||
expect(file.content).toBe(assetContent);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("exposes creator attribution and hides fake popularity stats for packaged skills", () => {
|
||||
for (const packagedSkill of listPackagedSkills()) {
|
||||
expect(packagedSkill.creatorName).toBeTruthy();
|
||||
expect(packagedSkill.creatorUrl).toBeTruthy();
|
||||
|
||||
const metadata = resolveSkillMarketplaceMetadata(buildPackagedSkillStatusEntry(packagedSkill));
|
||||
|
||||
expect(metadata.poweredByName).toBe(packagedSkill.creatorName);
|
||||
expect(metadata.poweredByUrl).toBe(packagedSkill.creatorUrl);
|
||||
expect(metadata.hideStats).toBe(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user