test_blink_registre_exclusion_date.py
Rama main · réplica de lectura del repositorio original.
"""Une copie périmée ne doit jamais faire reculer une décision d'exclusion."""
import copy
import tempfile
import unittest
from pathlib import Path
from unittest import mock
import blink_registre
import runtime
class TestsDateExclusion(unittest.TestCase):
def test_meme_etat_conserve_la_date_la_plus_recente(self):
for excluded in (False, True):
ancien = {'excluded': excluded, 'excluded_at': '2026-09-07T10:10:00+00:00'}
recent = {'excluded': excluded, 'excluded_at': '2026-09-07T10:30:00+00:00'}
for disque, entrant in ((ancien, recent), (recent, ancien)):
with self.subTest(excluded=excluded, disque=disque):
self.assertEqual(blink_registre._exclusion_a_retenir(disque, entrant),
(excluded, recent['excluded_at']))
def test_sauvegardes_retardees_ne_defont_pas_la_derniere_decision(self):
for derniere_exclusion in (False, True):
with self.subTest(excluded=derniere_exclusion), tempfile.TemporaryDirectory() as directory:
root = Path(directory)
def etat(excluded, minute):
return {'version': 2, 'clips': {'clip': {
'path': 'clip.mp4', 'camera': 'Salon',
'created_at': '2026-09-07T09:00:00+00:00',
'excluded': excluded, 'excluded_at': f'2026-09-07T10:{minute}:00+00:00'}}}
nouveau = etat(derniere_exclusion, '30')
with mock.patch.object(runtime, 'app_dir', return_value=root):
blink_registre.save_download_state(root, copy.deepcopy(nouveau))
blink_registre.save_download_state(root, etat(derniere_exclusion, '10'))
blink_registre.save_download_state(root, etat(not derniere_exclusion, '20'))
reel = blink_registre.load_download_state(root)['clips']['clip']
self.assertEqual(reel['excluded'], derniere_exclusion)
self.assertEqual(reel['excluded_at'], nouveau['clips']['clip']['excluded_at'])