Os testes foram separados em arquivos *.test.ts tanto para descomplicar o arquivo principal dos testes como para tornar mais fácil entender do que cada teste de trata. Feito isso, a pasta de testes foi tornada global para facilitar o uso de requisições à api por testes espalhados em diferentes locais.
Após isso, percebeu-se que, como a criptografia da senha era feita dentro do resolver do createUser, seria complicado criar usuários em tempo de execução, pois seria necessário criptografar as senhas manualmente sempre que se fosse criar um usuário de testes (ou ser obrigado a fazer requisições para createUser). Portanto, a solução utilizada foi usar o decorator @BeforeInsert() na UserEntity para criptografar a senha antes de salvá-la no banco de dados, resolvendo o problema mencionado e tornando a entidade menos dependente dos resolvers.
Finalmente, foram elaborados casos de testes para a realização de login e para a criação de usuários. Os casos criados estão definidos a seguir.
Os testes foram separados em arquivos
*.test.ts
tanto para descomplicar o arquivo principal dos testes como para tornar mais fácil entender do que cada teste de trata. Feito isso, a pasta de testes foi tornada global para facilitar o uso de requisições à api por testes espalhados em diferentes locais.Após isso, percebeu-se que, como a criptografia da senha era feita dentro do resolver do
createUser
, seria complicado criar usuários em tempo de execução, pois seria necessário criptografar as senhas manualmente sempre que se fosse criar um usuário de testes (ou ser obrigado a fazer requisições paracreateUser
). Portanto, a solução utilizada foi usar o decorator@BeforeInsert()
naUserEntity
para criptografar a senha antes de salvá-la no banco de dados, resolvendo o problema mencionado e tornando a entidade menos dependente dos resolvers.Finalmente, foram elaborados casos de testes para a realização de login e para a criação de usuários. Os casos criados estão definidos a seguir.
Login:
Criação de usuário: