import unittest

from lib.nomes_containers import (
    NOMES_CONTAINERS_PADRAO,
    obter_nome_container_api_gateway,
    obter_nome_container_api_gateway_mtls_proxy,
    obter_nome_container_configurar_microkafka,
    obter_nome_container_enterprise,
    obter_nome_container_enterprise_event_handler,
    obter_nome_container_enterprise_renderizador,
    obter_nome_container_microkafka,
    obter_nome_container_microkafka_ui,
    obter_nome_container_mu_whatsapp,
    obter_nome_container_proxy_https_linux,
    obter_nome_container_zookeeper,
)


class TestNomesContainers(unittest.TestCase):
    def test_retorna_nomes_padrao_quando_yaml_nao_define_valores(self):
        configuracoes = {
            "enterprise": {
                "eventHandler": {},
                "renderizador": {},
            },
            "api-gateway": {
                "mtls": {},
            },
            "microkafka": {},
            "muWhatsapp": {},
            "proxyHttpsLinux": {},
        }

        self.assertEqual(
            obter_nome_container_enterprise(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise"]
        )
        self.assertEqual(
            obter_nome_container_enterprise_event_handler(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise_event_handler"]
        )
        self.assertEqual(
            obter_nome_container_enterprise_renderizador(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise_renderizador"]
        )
        self.assertEqual(
            obter_nome_container_api_gateway(configuracoes),
            NOMES_CONTAINERS_PADRAO["api_gateway"]
        )
        self.assertEqual(
            obter_nome_container_api_gateway_mtls_proxy(configuracoes),
            NOMES_CONTAINERS_PADRAO["api_gateway_mtls_proxy"]
        )
        self.assertEqual(
            obter_nome_container_microkafka(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka"]
        )
        self.assertEqual(
            obter_nome_container_zookeeper(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_zookeeper"]
        )
        self.assertEqual(
            obter_nome_container_configurar_microkafka(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_configurador"]
        )
        self.assertEqual(
            obter_nome_container_microkafka_ui(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_ui"]
        )
        self.assertEqual(
            obter_nome_container_mu_whatsapp(configuracoes),
            NOMES_CONTAINERS_PADRAO["mu_whatsapp"]
        )
        self.assertEqual(
            obter_nome_container_proxy_https_linux(configuracoes),
            NOMES_CONTAINERS_PADRAO["proxy_https_linux"]
        )

    def test_ignora_valores_customizados_das_configuracoes(self):
        configuracoes = {
            "enterprise": {
                "nomeContainer": "enterprise-customizado",
                "eventHandler": {
                    "nomeContainer": "event-handler-customizado",
                },
                "renderizador": {
                    "nomeContainer": "renderizador-customizado",
                },
            },
            "api-gateway": {
                "nomeContainer": "gateway-customizado",
                "mtls": {
                    "nomeContainerProxy": "proxy-mtls-customizado",
                },
            },
            "microkafka": {
                "nomeContainer": "microkafka-customizado",
                "nomeContainerZookeeper": "zookeeper-customizado",
                "nomeContainerConfigurador": "configurador-customizado",
                "nomeContainerUI": "ui-customizada",
            },
            "muWhatsapp": {
                "nomeContainer": "muwhatsapp-customizado",
            },
            "proxyHttpsLinux": {
                "nomeContainer": "proxy-linux-customizado",
            },
        }

        self.assertEqual(
            obter_nome_container_enterprise(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise"]
        )
        self.assertEqual(
            obter_nome_container_enterprise_event_handler(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise_event_handler"]
        )
        self.assertEqual(
            obter_nome_container_enterprise_renderizador(configuracoes),
            NOMES_CONTAINERS_PADRAO["enterprise_renderizador"]
        )
        self.assertEqual(
            obter_nome_container_api_gateway(configuracoes),
            NOMES_CONTAINERS_PADRAO["api_gateway"]
        )
        self.assertEqual(
            obter_nome_container_api_gateway_mtls_proxy(configuracoes),
            NOMES_CONTAINERS_PADRAO["api_gateway_mtls_proxy"]
        )
        self.assertEqual(
            obter_nome_container_microkafka(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka"]
        )
        self.assertEqual(
            obter_nome_container_zookeeper(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_zookeeper"]
        )
        self.assertEqual(
            obter_nome_container_configurar_microkafka(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_configurador"]
        )
        self.assertEqual(
            obter_nome_container_microkafka_ui(configuracoes),
            NOMES_CONTAINERS_PADRAO["microkafka_ui"]
        )
        self.assertEqual(
            obter_nome_container_mu_whatsapp(configuracoes),
            NOMES_CONTAINERS_PADRAO["mu_whatsapp"]
        )
        self.assertEqual(
            obter_nome_container_proxy_https_linux(configuracoes),
            NOMES_CONTAINERS_PADRAO["proxy_https_linux"]
        )


if __name__ == "__main__":
    unittest.main()
