import pytest
from modules.organizer import (
    categorizar_por_tipo,
    criar_pasta_destino,
    obter_data_ficheiro,
)
from datetime import datetime


@pytest.mark.parametrize(
    "ficheiro, esperado",
    [
        ("foto.jpeg", "imagem"),
        ("documento.docx", "documento"),
        ("video.mp4", "video"),
        ("musica.mp3", "audio"),
        ("ficheiro.xyz", "outros"),
    ],
)
def test_categorizar_por_tipo(ficheiro, esperado):
    assert categorizar_por_tipo(ficheiro) == esperado


def test_obter_data_ficheiro(tmp_path):
    ficheiro = tmp_path / "teste.txt"
    ficheiro.write_text("conteudo")

    # teste data de modificação
    data_mod = obter_data_ficheiro(str(ficheiro), usar_criacao=False)
    assert isinstance(data_mod, datetime)

    # testar data de criação
    data_criacao = obter_data_ficheiro(str(ficheiro), usar_criacao=True)
    assert isinstance(data_criacao, datetime)


def test_criar_pasta_destino(tmp_path):
    pasta = criar_pasta_destino(str(tmp_path), "documento")
    assert pasta.exists()
    assert pasta.is_dir()

    pasta_com_data = criar_pasta_destino(
        str(tmp_path), "imagem", datetime.now(), "%Y-%m-%d"
    )
    assert pasta_com_data.exists()
    assert pasta_com_data.is_dir()
