import random

import pytest

from semantica.visualization.analytics_visualizer import AnalyticsVisualizer


@pytest.mark.benchmark(group="analytics_charts")
def test_centrality_ranking_sort_and_render(benchmark):
    """
    Benchmarks sorting a large centrality dictionary
    and rendering the Top N bar chart.
    """
    viz = AnalyticsVisualizer()

    # Generate 5000 node scores
    centrality_data = {
        "centrality": {f"node_{i}": random.random() for i in range(5000)}
    }

    def run():
        return viz.visualize_centrality_rankings(
            centrality_data, centrality_type="degree", top_n=50, output="interactive"
        )

    benchmark.pedantic(run, iterations=1, rounds=10)
