williamgueiros / Brcpfcnpj

Validação,Formatação e Gerador Cpf/Cnpj em Elixir
MIT License
69 stars 17 forks source link

Ecto type #23

Open VitorTrin opened 4 years ago

VitorTrin commented 4 years ago

Planejo um tipo para cpf, um para cnpj e um que aceita os 2

A idéia é salvar como string sem pontuação e devolver do banco como struct, de novo sem pontuação

Aceito sugestões de como testar isso.

VitorTrin commented 4 years ago

Ecto mudou como definir tipos customizados quando foi para 3.0. Vai ser preciso quebrar a compatibilidade com elixir 1.4 ou manter duas major versions ao mesmo tempo. Eu voto em quebrar a compatibilidade.

aleDsz commented 3 years ago

Como ficou esse PR? 🤔

VitorTrin commented 3 years ago

@aleDsz desculpa a demora em responder, dei uma desanimada devido a quão complexo seria criar um setup de testes que realmente inserisse esse tipo em uma tabela, seria mais complexo que o resto da lib.

aleDsz commented 3 years ago

@aleDsz desculpa a demora em responder, dei uma desanimada devido a quão complexo seria criar um setup de testes que realmente inserisse esse tipo em uma tabela, seria mais complexo que o resto da lib.

Neste caso eu posso tentar ajudar então, ai qualquer dúvida eu tiro contigo. Pode ser?

VitorTrin commented 3 years ago

Claro! O setup de testes que eu pensei foi o seguinte: Criar uma tabela com esse tipo e testar a inserção e recuperação de uma entrada. Para isso seria preciso criar e configurar um banco no setup de testes.

outra alternativa é confiar que se as funçãos de tipo custom estão bem implementadas e testadas dá pra confiar que o ecto está fazendo o trabalho dele. Nesse caso é só mergear. O que acha?

williamgueiros commented 3 years ago

Nunca fiz, mas sei que da para usar o https://docs.travis-ci.com/user/database-setup/ para subir uma base só para testes.

aleDsz commented 3 years ago

O Ecto tem um setup de "banco de dados" que na real não sobe banco nenhum, ele só usa a interface do Ecto para criar um banco fictício.

Posso utilizar isso para garantir que o read, update e create serão realizados sem problemas.

O Ecto Type eu cheguei a criar em um projeto privado utilizando as validações dessa lib, então não vejo problemas para fazer isso ser "oficial" hahaha

aleDsz commented 3 years ago

Pessoal, fiz alguns testes mas não havia garantias na hora de dar Repo.get/2 no banco fictício do Ecto, então aproveitei para configurar o uso de Postgres nos testes, além de gerar migrations.

Also, criei o PR #27 que complementa esse aqui, ele ainda está em draft para irmos discutindo o que podemos ir mudando e deixar do jeito que funcione 100%