"""Tests for Gestión 4sat module"""
import pytest
import asyncio
from routes.gestion4sat import normalizar_rut, formatear_rut, normalizar_patente, patente_plana


class TestRutNormalization:
    def test_with_dots_and_hyphen(self):
        assert normalizar_rut("77.279.868-7") == "772798687"

    def test_with_hyphen_only(self):
        assert normalizar_rut("76528171-7") == "765281717"

    def test_with_k(self):
        assert normalizar_rut("77.267.273-K") == "77267273K"

    def test_empty(self):
        assert normalizar_rut("") == ""
        assert normalizar_rut(None) == ""

    def test_format_rut(self):
        assert formatear_rut("772798687") == "77.279.868-7"
        assert formatear_rut("137498529") == "13.749.852-9"
        assert formatear_rut("77267273K") == "77.267.273-K"


class TestPatenteNormalization:
    def test_new_format_4_2(self):
        assert normalizar_patente("ABCD12") == "ABCD-12"
        assert normalizar_patente("abcd12") == "ABCD-12"

    def test_old_format_2_4(self):
        assert normalizar_patente("AB1234") == "AB-1234"

    def test_special_3_3(self):
        assert normalizar_patente("ABC123") == "ABC-123"
        assert normalizar_patente("BBB111") == "BBB-111"

    def test_already_formatted(self):
        assert normalizar_patente("ABCD-12") == "ABCD-12"

    def test_empty(self):
        assert normalizar_patente("") == ""
        assert normalizar_patente(None) == ""

    def test_plana(self):
        assert patente_plana("ABCD-12") == "ABCD12"
        assert patente_plana("AB-1234") == "AB1234"


if __name__ == "__main__":
    pytest.main([__file__, "-v"])
