Spaces:
Paused
Paused
| import { performRanking } from "./ranker"; | |
| describe("performRanking", () => { | |
| it("should rank links based on similarity to search query", async () => { | |
| const linksWithContext = [ | |
| "url: https://example.com/dogs, title: All about dogs, description: Learn about different dog breeds", | |
| "url: https://example.com/cats, title: Cat care guide, description: Everything about cats", | |
| "url: https://example.com/pets, title: General pet care, description: Care for all types of pets", | |
| ]; | |
| const links = [ | |
| "https://example.com/dogs", | |
| "https://example.com/cats", | |
| "https://example.com/pets", | |
| ]; | |
| const searchQuery = "cats training"; | |
| const result = await performRanking(linksWithContext, links, searchQuery); | |
| // Should return array of objects with link, linkWithContext, score, originalIndex | |
| expect(result).toBeInstanceOf(Array); | |
| expect(result.length).toBe(3); | |
| // First result should be the dogs page since query is about dogs | |
| expect(result[0].link).toBe("https://example.com/cats"); | |
| // Each result should have required properties | |
| result.forEach((item) => { | |
| expect(item).toHaveProperty("link"); | |
| expect(item).toHaveProperty("linkWithContext"); | |
| expect(item).toHaveProperty("score"); | |
| expect(item).toHaveProperty("originalIndex"); | |
| expect(typeof item.score).toBe("number"); | |
| expect(item.score).toBeGreaterThanOrEqual(0); | |
| expect(item.score).toBeLessThanOrEqual(1); | |
| }); | |
| // Scores should be in descending order | |
| for (let i = 1; i < result.length; i++) { | |
| expect(result[i].score).toBeLessThanOrEqual(result[i - 1].score); | |
| } | |
| }); | |
| it("should handle empty inputs", async () => { | |
| const result = await performRanking([], [], ""); | |
| expect(result).toEqual([]); | |
| }); | |
| it("should maintain original order for equal scores", async () => { | |
| const linksWithContext = [ | |
| "url: https://example.com/1, title: Similar content A, description: test", | |
| "url: https://example.com/2, title: Similar content B, description: test", | |
| ]; | |
| const links = ["https://example.com/1", "https://example.com/2"]; | |
| const searchQuery = "test"; | |
| const result = await performRanking(linksWithContext, links, searchQuery); | |
| // If scores are equal, original order should be maintained | |
| expect(result[0].originalIndex).toBeLessThan(result[1].originalIndex); | |
| }); | |
| }); | |