from os import name
import shutil
import pytest
from modules.copier import copiar_ficheiros_para_destino
from modules.organizer import categorizar_por_tipo, obter_data_ficheiro


@pytest.fixture
def ficheiro_teste(tmp_path):
    ficheiro = tmp_path / "teste.txt"
    ficheiro.write_text("conteudo de teste")
    return ficheiro


def test_copiar_ficheiros_para_destino_simples(tmp_path, ficheiro_teste):
    destino = tmp_path / "destino"
    destino.mkdir()

    copiar_ficheiros_para_destino([str(ficheiro_teste)], str(destino))

    # verificar se foi copiado para a pasta 'outros'
    ficheiro_copiado = destino / "outros" / ficheiro_teste.name
    assert ficheiro_copiado.exists()
    assert ficheiro_copiado.read_text() == "conteudo de teste"


def test_copiar_ficheiros_para_destino_com_data_modificacao(tmp_path, ficheiro_teste):
    destino = tmp_path / "destino"
    destino.mkdir()

    copiar_ficheiros_para_destino(
        [str(ficheiro_teste)],
        str(destino),
        categorizar_data=True,
        usar_criacao=False,
        formato_data="%Y-%m-%d",
    )

    categoria = categorizar_por_tipo(str(ficheiro_teste))
    data_dir = obter_data_ficheiro(
        str(ficheiro_teste), False).strftime("%Y-%m-%d")
    ficheiro_copiado = destino / categoria / data_dir / ficheiro_teste.name

    assert ficheiro_copiado.exists()
    assert ficheiro_copiado.read_text() == "conteudo de teste"


def test_copiar_ficheiros_para_destino_lista_ficheiros_vazia(tmp_path):
    destino = tmp_path / "destino"
    destino.mkdir()

    copiar_ficheiros_para_destino([], str(destino))
    # verifica se a pasta de destino ficou vazia
    assert list(destino.glob("*")) == []
