cb93dbe05a
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
import os
|
|
|
|
|
|
def test_update_timestamp_falls_back_to_db_mtime(tmp_path, monkeypatch):
|
|
import src.utils as u
|
|
from src.utils import get_data_update_timestamp
|
|
|
|
def boom(*a, **k):
|
|
raise RuntimeError("net down")
|
|
|
|
monkeypatch.setattr(u, "get_last_modified", boom)
|
|
fb = tmp_path / "decp.duckdb"
|
|
fb.write_bytes(b"x")
|
|
assert get_data_update_timestamp("http://x", str(fb)) == os.path.getmtime(str(fb))
|
|
|
|
|
|
def test_update_timestamp_none_when_all_fail(monkeypatch):
|
|
import src.utils as u
|
|
from src.utils import get_data_update_timestamp
|
|
|
|
def boom(*a, **k):
|
|
raise RuntimeError("net down")
|
|
|
|
monkeypatch.setattr(u, "get_last_modified", boom)
|
|
assert get_data_update_timestamp("http://x", None) is None
|
|
|
|
|
|
def test_update_timestamp_nominal(monkeypatch):
|
|
import src.utils as u
|
|
from src.utils import get_data_update_timestamp
|
|
|
|
monkeypatch.setattr(u, "get_last_modified", lambda p: 123.0)
|
|
assert get_data_update_timestamp("http://x", None) == 123.0
|
|
|
|
|
|
def test_sources_tables_none_path():
|
|
from src.figures import get_sources_tables
|
|
|
|
div = get_sources_tables(None)
|
|
assert "indisponible" in str(div.children).lower()
|
|
|
|
|
|
def test_sources_tables_missing_file():
|
|
from src.figures import get_sources_tables
|
|
|
|
div = get_sources_tables("/does/not/exist.csv")
|
|
assert "indisponible" in str(div.children).lower()
|
|
|
|
|
|
def test_sources_tables_valid_csv(tmp_path):
|
|
from dash import dash_table
|
|
|
|
from src.figures import get_sources_tables
|
|
|
|
csv = tmp_path / "s.csv"
|
|
csv.write_text(
|
|
"nom,organisation,nb_marchés,nb_acheteurs,code,url,unique\n"
|
|
"Source A,Org A,5,2,XA,http://a,1\n"
|
|
)
|
|
div = get_sources_tables(str(csv))
|
|
assert isinstance(div.children, dash_table.DataTable)
|