"""
Qué badge lleva cada resultado.

Lo que se defiende: que los tres archivos existan, que un badge fijo sea ése, y
que la rotación reparta entre los tres sin cambiar de opinión sobre un mismo
pedido.
"""

import uuid

import pytest

from apps.ai import watermark
from apps.ai.watermark import Watermark


@pytest.mark.parametrize('badge', watermark.BADGES)
def test_every_badge_is_among_the_static_files(badge):
    assert watermark.badge_path(badge).is_file()


@pytest.mark.parametrize('badge', watermark.BADGES)
def test_a_fixed_badge_is_that_one(badge):
    assert watermark.badge_for(badge, uuid.uuid4()) == badge


def test_rotating_keeps_the_same_badge_for_the_same_request():
    generation_id = uuid.uuid4()

    picks = {watermark.badge_for(Watermark.ROTATE, generation_id) for _ in range(5)}

    assert len(picks) == 1


def test_rotating_goes_through_the_three():
    picks = {watermark.badge_for(Watermark.ROTATE, uuid.UUID(int=number)) for number in range(3)}

    assert picks == set(watermark.BADGES)


def test_a_value_that_is_no_longer_offered_falls_back_to_the_default():
    """Un resultado sin marca sería peor que uno con la de siempre."""
    assert watermark.badge_for('gold', uuid.uuid4()) == watermark.DEFAULT_WATERMARK
