- criada a guia Trilhas com processamento em lote e progresso por música - simplificada a guia Trilhas para ocultar a configuração interna dos modelos Resumo: - 12 arquivos alterados - 1 novos - 11 modificados - 0 removidos 11 files changed, 173 insertions(+), 41 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/analisar_trilhas.py - code/engine/carregar_plano_de_edicao.py - code/engine/executar_scanner.py - code/engine/persistencia/__init__.py - code/engine/persistencia/repositorio_de_trilhas.py - code/engine/testes/test_carregar_plano_de_edicao.py - code/engine/testes/test_executar_scanner.py - code/engine/testes/test_repositorio_de_trilhas.py
75 lines
3.0 KiB
Python
75 lines
3.0 KiB
Python
"""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()
|