Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validação de RG #428

Open
camilamaia opened this issue Oct 21, 2024 · 2 comments
Open

Validação de RG #428

camilamaia opened this issue Oct 21, 2024 · 2 comments

Comments

@camilamaia
Copy link
Member

camilamaia commented Oct 21, 2024

Seu pedido de recurso está relacionado a um problema? Por favor, descreva.

Precisamos de uma função que valide o Registro Geral (RG) brasileiro, considerando que cada estado pode ter um formato de RG diferente. Além disso, alguns estados podem ter regras específicas, como a presença de letras ou dígitos no formato. Queremos validar um RG para garantir sua autenticidade em diferentes contextos.

Descreva a solução que você gostaria

  • Uma função is_valid_rg, que recebe como entrada o RG (string) e a Unidade Federativa (UF) e retorna um valor booleano indicando se o RG é válido.
  • Caso o RG seja inválido, a função deve retornar False.
  • A função deve lidar com todos os formatos de RG dos diferentes estados brasileiros.
  • Considerar possíveis edge cases, como RGs com dígitos repetidos, tamanhos fora do padrão e símbolos inválidos.

Descreva alternativas que você considerou

  1. Seguir até o passo 8 do guia de contribuição.

  2. Como parte do passo 8, criar o arquivo: brutils-python/brutils/rg.py.

    def is_valid_rg(rg, uf):  # type: (str, str) -> bool
        """
        Validates a Brazilian RG (Registro Geral) based on the state (UF).
    
        This function checks whether a given RG is valid for a specific state in Brazil. Each state
        may have its own RG format, and the function should handle these differences.
    
        Args:
            rg (str): The RG to be validated.
            uf (str): The state (UF) for which the RG should be validated.
    
        Returns:
            bool: Returns True if the RG is valid, or False if it is invalid.
    
        Example:
            >>> is_valid_rg('12.345.678-9', 'SP')
            True
            >>> is_valid_rg('MG-12.345.678', 'MG')
            True
            >>> is_valid_rg('123456789', 'RJ')
            False
            >>> is_valid_rg('A12345678', 'SP')
            False
            >>> is_valid_rg('12.345.678', 'SP')
            False
        """
        # implementar a lógica da função aqui

    Importar a nova função no arquivo brutils-python/brutils/__init__.py:

    # RG Imports
    from brutils.rg import (
        is_valid_rg,
    )

    E adicionar o nome da nova função na lista __all__ do mesmo arquivo brutils-python/brutils/__init__.py:

    __all__ = [
        ...
        # RG
        'is_valid_rg',
    ]
  3. Como parte do passo 9, criar o arquivo de teste: brutils-python/tests/test_rg.py.

    from unittest import TestCase
    from brutils.rg import is_valid_rg
    
    class TestRG(TestCase):
        def test_is_valid_rg(self):
            # Testes para RGs válidos
            self.assertTrue(is_valid_rg('12.345.678-9', 'SP'))
            self.assertTrue(is_valid_rg('MG-12.345.678', 'MG'))
            self.assertTrue(is_valid_rg('123456789', 'RJ'))
    
            # Testes para RGs inválidos
            self.assertFalse(is_valid_rg('A12345678', 'SP'))  # Letras não permitidas
            self.assertFalse(is_valid_rg('1234567890', 'SP'))  # RG longo demais
            self.assertFalse(is_valid_rg('12.345.678-10', 'SP'))  # Dígito verificador incorreto
    
            # Testes para entradas malformadas
            self.assertFalse(is_valid_rg('', 'SP'))  # Entrada vazia
            self.assertFalse(is_valid_rg('12.345.678', 'SP'))  # Formato incorreto sem dígito verificador
            self.assertFalse(is_valid_rg('12.345.678-9', 'XX'))  # UF inválida
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

  • Cada estado brasileiro pode ter um formato de RG ligeiramente diferente, então a função deve lidar com essas variações regionais.
  • A função deve ser capaz de identificar formatos incorretos, dígitos repetidos e RGs malformados.

Links de Referência

@vianaz
Copy link

vianaz commented Nov 26, 2024

bora!

Copy link

Issue 428 atribuida a vianaz 🚀"
"Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants