Open VitorTrin opened 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.
Como ficou esse PR? 🤔
@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 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?
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?
Nunca fiz, mas sei que da para usar o https://docs.travis-ci.com/user/database-setup/ para subir uma base só para testes.
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
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%
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.