import { describe, expect, it } from "vitest";
import { collectionInfo } from "./collection-info";

describe("collectionInfo", () => {
	it("should return the collection info", async () => {
		const collection = await collectionInfo({
			slug: "huggingfacejs/test-collection-690df2897fa1945492b8cf42",
		});

		// Check all properties of the collection except items
		expect(collection).toEqual({
			slug: "huggingfacejs/test-collection-690df2897fa1945492b8cf42",
			title: "Test Collection",
			description: "Only used in E2E tests",
			gating: false,
			lastUpdated: expect.any(String),
			owner: {
				_id: "6414d83b385a75d7790d5a58",
				avatarUrl: expect.any(String),
				fullname: "Huggingface.js",
				name: "huggingfacejs",
				type: "org",
				followerCount: expect.any(Number),
				isHf: false,
				isHfAdmin: false,
				isMod: false,
				isUserFollowing: expect.any(Boolean),
			},
			items: [
				{
					_id: "690df2a467ea25a1a346d0ae",
					author: "huggingfacejs",
					datasetsServerInfo: {
						formats: expect.any(Array),
						libraries: expect.any(Array),
						modalities: expect.any(Array),
						numRows: expect.any(Number),
						viewer: expect.any(String),
					},
					downloads: expect.any(Number),
					gated: false,
					id: "huggingfacejs/tasks",
					isBenchmark: false,
					isLikedByUser: false,
					isTraces: false,
					lastModified: expect.any(String),
					likes: expect.any(Number),
					position: 0,
					private: false,
					repoType: "dataset",
					type: "dataset",
				},
				{
					_id: "690df2b1954547dac9727da3",
					description: "Only used in E2E tests",
					id: "690df2897fa1945492b8cf42",
					isUpvotedByUser: false,
					lastUpdated: "2025-11-07T13:24:26.277Z",
					numberItems: 5,
					owner: {
						_id: "6414d83b385a75d7790d5a58",
						avatarUrl: expect.any(String),
						followerCount: expect.any(Number),
						fullname: "Huggingface.js",
						isHf: false,
						isHfAdmin: false,
						isMod: false,
						isUserFollowing: expect.any(Boolean),
						name: "huggingfacejs",
						type: "org",
					},
					position: 1,
					shareUrl: "https://hf.co/collections/huggingfacejs/test-collection",
					slug: "huggingfacejs/test-collection-690df2897fa1945492b8cf42",
					theme: "pink",
					title: "Test Collection",
					type: "collection",
					upvotes: expect.any(Number),
				},
				{
					_id: "690df2c49f252aa897a873b2",
					ai_category: "Model Benchmarking",
					ai_short_description: "Upload ML models to Hugging Face Hub from your browser",
					author: "huggingfacejs",
					authorData: {
						_id: "6414d83b385a75d7790d5a58",
						avatarUrl: expect.any(String),
						followerCount: expect.any(Number),
						fullname: "Huggingface.js",
						isHf: false,
						isHfAdmin: false,
						isMod: false,
						isUserFollowing: expect.any(Boolean),
						name: "huggingfacejs",
						type: "org",
					},
					colorFrom: "green",
					colorTo: "green",
					createdAt: "2023-03-17T21:33:16.000Z",
					emoji: "🌎",
					featured: false,
					id: "huggingfacejs/push-model-from-web",
					isLikedByUser: false,
					lastModified: expect.any(String),
					likes: 1,
					pinned: false,
					position: 2,
					private: false,
					repoType: "space",
					runtime: {
						hardware: {
							current: null,
							requested: null,
						},
						replicas: {
							current: 1,
							requested: 1,
						},
						stage: "RUNNING",
					},
					sdk: "static",
					tags: ["static", "region:us"],
					title: "Push Model From Web",
					trendingScore: 0,
					type: "space",
					visibility: "public",
				},
				{
					_id: "690df2d0c9390ed6ab0f88b1",
					id: "2510.04871",
					isUpvotedByUser: false,
					position: 3,
					publishedAt: "2025-10-06T14:58:08.000Z",
					thumbnailUrl: "https://cdn-thumbnails.huggingface.co/social-thumbnails/papers/2510.04871.png",
					title: "Less is More: Recursive Reasoning with Tiny Networks",
					type: "paper",
					upvotes: expect.any(Number),
				},
				{
					_id: "690df30af2d88fbd705feda5",
					author: "huggingfacejs",
					authorData: {
						_id: "6414d83b385a75d7790d5a58",
						avatarUrl: expect.any(String),
						followerCount: expect.any(Number),
						fullname: "Huggingface.js",
						isHf: false,
						isHfAdmin: false,
						isMod: false,
						isUserFollowing: expect.any(Boolean),
						name: "huggingfacejs",
						type: "org",
					},
					availableInferenceProviders: [],
					downloads: expect.any(Number),
					gated: false,
					id: "huggingfacejs/test-model",
					isLikedByUser: false,
					lastModified: expect.any(String),
					likes: expect.any(Number),
					position: 4,
					private: false,
					repoType: "model",
					type: "model",
				},
			],
			theme: "pink",
			private: false,
			position: 0,
			shareUrl: "https://hf.co/collections/huggingfacejs/test-collection",
			upvotes: expect.any(Number),
			isUpvotedByUser: false,
		});
	});
});
