"""Testes do carregamento de planos de edição diretamente do SQLite.""" import json import tempfile import unittest from pathlib import Path from engine.carregar_plano_de_edicao import carregar from engine.dominio import Clipe, Faixa, IntervaloDeTempo, Timeline from engine.persistencia import abrir_banco from engine.persistencia.repositorio_de_planos import RepositorioDePlanos, plano_de_dict from engine.persistencia.repositorio_de_timeline_sqlite import RepositorioDeTimelineSQLite class TesteCarregarPlanoDeEdicao(unittest.TestCase): """Garante que a interface receba o plano no contrato de aplicação.""" def test_carrega_plano_mais_recente_do_video(self): with tempfile.TemporaryDirectory() as pasta: banco = Path(pasta) / "analises.db" conexao = abrir_banco(banco) repositorio = RepositorioDePlanos(conexao) plano_id = repositorio.registrar_plano(plano_de_dict( {"source": "Sequência", "actions": [ {"kind": "cut", "start": 1, "end": 2, "reason": "repetição"}, ]}, video_id="video-1", tipo_de_video="depoimento", )) conexao.close() carregado = carregar(banco, video_id="video-1") self.assertEqual(carregado["plano_id"], plano_id) self.assertEqual(carregado["video_id"], "video-1") self.assertEqual(carregado["actions"][0]["kind"], "cut") self.assertEqual(carregado["actions"][0]["reason"], "repetição") def test_resolve_nome_da_sequencia_para_arquivo_unico_do_video(self): """Entrega ao aplicador a mídia real quando o plano histórico guardou a sequência.""" with tempfile.TemporaryDirectory() as pasta: banco = Path(pasta) / "analises.db" conexao = abrir_banco(banco) RepositorioDeTimelineSQLite(conexao).registrar_timeline(Timeline( identificador="video-1", nome="Cópia de 0E6A8829", faixas=[Faixa( identificador="video_0", nome="Vídeo 1", tipo="video", indice=0, clipes=[Clipe( identificador="clipe-1", nome="0E6A8829.MP4", intervalo_na_timeline=IntervaloDeTempo(0.0, 1018.2), intervalo_na_origem=IntervaloDeTempo(0.0, 1018.2), arquivo="/Volumes/Midia/0E6A8829.MP4", )], )], )) repositorio = RepositorioDePlanos(conexao) repositorio.registrar_plano(plano_de_dict( {"source": "Cópia de 0E6A8829", "actions": [ {"kind": "cut", "start": 0.0, "end": 124.79, "reason": "abertura"}, ]}, video_id="video-1", )) conexao.close() carregado = carregar(banco, video_id="video-1") self.assertEqual(carregado["source"], "/Volumes/Midia/0E6A8829.MP4") if __name__ == "__main__": unittest.main()