from app.core.cache import TTLCache
from tests.fakes import FakeClock


def test_value_is_kept_until_it_expires():
    clock = FakeClock()
    cache = TTLCache[bool](60, clock=clock)
    cache.set("26", True)

    clock.now += 59.9
    assert cache.get("26") is True

    clock.now += 0.1
    assert cache.get("26") is None


def test_missing_key_is_none_and_false_is_kept():
    cache = TTLCache[bool](60, clock=FakeClock())
    assert cache.get("26") is None

    cache.set("26", False)
    assert cache.get("26") is False


def test_setting_again_restarts_the_time():
    clock = FakeClock()
    cache = TTLCache[bool](60, clock=clock)
    cache.set("26", True)
    clock.now += 50
    cache.set("26", False)
    clock.now += 50

    assert cache.get("26") is False
