1
etude_lego_jurassic_world/tests/test_minifig_stats.py

57 lines
1.6 KiB
Python

"""Tests des statistiques liées aux minifigs."""
from lib.rebrickable.minifig_stats import (
MINIFIG_TOTAL_LABEL,
TOTAL_PARTS_LABEL,
compute_filtered_minifig_total,
merge_minifig_stat,
)
def test_compute_filtered_minifig_total_counts_latest_inventory(tmp_path) -> None:
"""Additionne les minifigs en utilisant la dernière version d'inventaire."""
inventories_path = tmp_path / "inventories.csv"
inventories_path.write_text(
"id,version,set_num\n"
"1,1,123-1\n"
"2,2,123-1\n"
"3,1,124-1\n"
)
inventory_minifigs_path = tmp_path / "inventory_minifigs.csv"
inventory_minifigs_path.write_text(
"inventory_id,fig_num,quantity\n"
"1,fig-01,1\n"
"2,fig-02,3\n"
"3,fig-03,2\n"
)
filtered_sets = [{"set_num": "123-1"}, {"set_num": "124-1"}]
total = compute_filtered_minifig_total(filtered_sets, inventories_path, inventory_minifigs_path)
assert total == 5
def test_merge_minifig_stat_inserts_after_total_parts_and_replaces_existing() -> None:
"""Insère l'entrée minifigs après le total de pièces et remplace l'ancienne valeur."""
base_stats = [
("A", "1"),
(TOTAL_PARTS_LABEL, "10"),
("B", "2"),
]
with_minifigs = merge_minifig_stat(base_stats, 7)
refreshed = merge_minifig_stat(with_minifigs, 8)
assert with_minifigs == [
("A", "1"),
(TOTAL_PARTS_LABEL, "10"),
(MINIFIG_TOTAL_LABEL, "7"),
("B", "2"),
]
assert refreshed == [
("A", "1"),
(TOTAL_PARTS_LABEL, "10"),
(MINIFIG_TOTAL_LABEL, "8"),
("B", "2"),
]