Spaces:
Running on Zero
Running on Zero
| from hackathon_advisor.dashboard import build_dashboard_payload | |
| from hackathon_advisor.data import Project, ProjectIndex, build_index_payload | |
| from hackathon_advisor.dashboard_search import DashboardSearchIndex | |
| def test_dashboard_search_bm25_ranks_text_matches() -> None: | |
| project_index = fake_project_index() | |
| payload = build_dashboard_payload(project_index, generated_at="2026-06-08T00:00:00+00:00") | |
| search_index = DashboardSearchIndex(project_index.projects, payload) | |
| result = search_index.search("project 4 summary", limit=3) | |
| assert result["algorithm"] == "bm25-text-v1" | |
| assert result["results"] | |
| assert result["results"][0]["project_id"] == "build-small-hackathon/project-4" | |
| assert result["results"][0]["score"] == 1.0 | |
| assert result["results"][0]["snippets"] | |
| def test_dashboard_search_splits_slug_tokens() -> None: | |
| project_index = fake_project_index() | |
| payload = build_dashboard_payload(project_index, generated_at="2026-06-08T00:00:00+00:00") | |
| search_index = DashboardSearchIndex(project_index.projects, payload) | |
| result = search_index.search("project-7", limit=3) | |
| assert result["results"][0]["project_id"] == "build-small-hackathon/project-7" | |
| assert "project-7" in result["results"][0]["matched_terms"] | |
| def fake_project_index() -> ProjectIndex: | |
| projects = [ | |
| Project( | |
| id=f"build-small-hackathon/project-{index}", | |
| title=f"Project {index}", | |
| summary=f"Offline project planner {index}", | |
| tags=("gradio", "local-first"), | |
| models=("tiny-model",), | |
| datasets=(), | |
| likes=index, | |
| sdk="gradio", | |
| license="mit", | |
| created_at="2026-06-01T00:00:00+00:00", | |
| last_modified=f"2026-06-{index + 1:02d}T00:00:00+00:00", | |
| host=f"https://project-{index}.hf.space", | |
| url=f"https://huggingface.co/spaces/build-small-hackathon/project-{index}", | |
| app_file="app.py", | |
| app_file_embedding_text=f"local inference gradio small model artifact project {index}", | |
| readme_body=f"README evidence for project {index}", | |
| ) | |
| for index in range(10) | |
| ] | |
| embeddings = [] | |
| for index in range(10): | |
| vector = [0.0] * 10 | |
| vector[index] = 1.0 | |
| embeddings.append(vector) | |
| generated_at = "2026-06-08T00:00:00+00:00" | |
| source = "https://example.test/spaces" | |
| return ProjectIndex( | |
| projects=projects, | |
| generated_at=generated_at, | |
| source=source, | |
| index_payload=build_index_payload(projects, generated_at, source, embeddings), | |
| ) | |