You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
O sistema terá duas interfaces sendo uma Web (HTML, CSS, JS) e a outra API (Ex: REST).
Web:
Visitante (usuário não logado)
Para fazer uso do sistema o usuário precisará de um token. Ou seja, ao acessar a aplicação na versão WEB ele deverá ver duas opções:
Gerar token de acesso
Login via token
Gerar token de acesso
Esse é o processo que deverá criar um usuário no sistema, sendo que para gerar o token de acesso o usuário deverá fornecer seu email. Após submeter o form, informe que o usuário precisará acessar o email para ativar sua conta.
No conteúdo do e-mail deverá ter um link que ativará o token e fará login do usuário logo em seguida.
Login via token
Apresentará um campo texto para o token e um botão para submeter o form e então acessar o sistema. Sendo que o usuário só poderá entrar no sistema caso o token seja válido.
Esqueci minha senha
Nesse sistema não haverá esse recurso, se necessário o usuário poderá usar o recurso de gerar token para esse propósito. Se um usuário gerar um novo token, o token antigo só será invalidado caso o mesmo faça uso do novo link de ativação (que foi enviado por email).
Usuário (fez login via token)
As funcionalidades previstas são:
Listar invoices (Filtros: número da invoice, data)
Visualizar invoice
Criar e enviar invoice
Logout
Criar e enviar invoice
Esse sistema é extremamente básico, ou seja, para criar uma invoice serão necessários os seguintes campos:
Número da Invoice
Data
Empresa (textarea para receber os dados da empresa que está emitindo a invoice)
Cobrança para (textarea para adicionar os dados de quem receberá a cobrança)
Valor total
Emails (para enviar a Invoice aos responsáveis pela cobrança)
Ao criar a invoice, o usuário será redirecionado para tela de visualização que apresentará todos os dados da invoice mais um alerta informando que a mesma foi enviada para os emails informados na criação.
Envio de invoices:
As invoices deverão ser enviadas por email com:
Corpo de e-mail
Link para visualização
Anexo
Versão da invoice como PDF
Visualização da invoice
Apresentar todos os dados da invoice.
Ação:
Download da invoice como PDF.
Se logado
O usuário poderá enviar a invoice para novos emails.
API:
Usará o token de acesso como autenticação e deverá conter os seguintes endpoints:
Listar invoices (Filtros: número da invoice, data)
Visualizar invoice
Criar e enviar invoice
Enviar invoices para novos emails
Solução
Além do código, queremos receber um racional do que foi feito (porque priorizou A em vez de B), como foi feito (gems, patterns, paradigmas...) e do que poderia ser melhorado. Registre isso em um README.
Use isso a seu favor: Você não precisa fazer tudo, mas o que fizer faça bem feito. Defina um escopo que possa vender bem o teu peixe e que se adeque a disponibilidade / prazo que você tem para realizar o teste.
Expectativas:
Utilize Ruby on Rails;
Escreva testes automatizados;
Faça commits atômicos e progressivos;
Documente a API;
Trabalhe a separação de responsabilidades na aplicação;
Trabalhe a representação dos conceitos, faça uso de bons nomes em variáveis, métodos, classes, módulos/namespaces;
Ruby 2.7 e Rails 6.0, estamos nos preparando para atualizar ambos. Então pedimos que teu teste use dessas versões para cima.
Fazemos uso de casos de uso para encapsular as regras de negócio. Ou seja, nós não implementamos o código diretamente nos controllers, models, jobs. Todo ponto de entrada delega a operação para um caso de uso.
Testes: Rspec, factory bot, shoulda matchers.
Namespaces: Curtimos muito modularizar o código, ao agrupar classes, módulos, constantes que tenham relação ao conceito / domínio que representam.
Bons nomes para métodos, constantes (classes e módulos), namespaces.
Garanta que o setup seja fácil e que tanto a aplicação quanto o teste rodem. Pode não parecer, mas recebemos diversos testes que ao fazer o git clone e realizar o setup o projeto não rodava de primeira. Nosso time teve de ajustar N entregas para conseguir avaliar o que foi feito (mas isso não é legal e tira pontos de quem aplicou).
PS: Sinta-se a vontade para apresentar sugestões, práticas na qual você acredita serem melhores. ;)
The text was updated successfully, but these errors were encountered:
Husky challenge!
Problema:
Desenvolver um gerador de invoices.
Escopo:
O sistema terá duas interfaces sendo uma Web (HTML, CSS, JS) e a outra API (Ex: REST).
Web:
Visitante (usuário não logado)
Para fazer uso do sistema o usuário precisará de um token. Ou seja, ao acessar a aplicação na versão WEB ele deverá ver duas opções:
Gerar token de acesso
Esse é o processo que deverá criar um usuário no sistema, sendo que para gerar o token de acesso o usuário deverá fornecer seu email. Após submeter o form, informe que o usuário precisará acessar o email para ativar sua conta.
No conteúdo do e-mail deverá ter um link que ativará o token e fará login do usuário logo em seguida.
Login via token
Apresentará um campo texto para o token e um botão para submeter o form e então acessar o sistema. Sendo que o usuário só poderá entrar no sistema caso o token seja válido.
Esqueci minha senha
Nesse sistema não haverá esse recurso, se necessário o usuário poderá usar o recurso de gerar token para esse propósito. Se um usuário gerar um novo token, o token antigo só será invalidado caso o mesmo faça uso do novo link de ativação (que foi enviado por email).
Usuário (fez login via token)
As funcionalidades previstas são:
Criar e enviar invoice
Esse sistema é extremamente básico, ou seja, para criar uma invoice serão necessários os seguintes campos:
Ao criar a invoice, o usuário será redirecionado para tela de visualização que apresentará todos os dados da invoice mais um alerta informando que a mesma foi enviada para os emails informados na criação.
Envio de invoices:
As invoices deverão ser enviadas por email com:
Visualização da invoice
API:
Usará o token de acesso como autenticação e deverá conter os seguintes endpoints:
Solução
Expectativas:
Contexto: O que utilizamos / fazemos na Husky.
Ruby 2.7 e Rails 6.0, estamos nos preparando para atualizar ambos. Então pedimos que teu teste use dessas versões para cima.
Fazemos uso de casos de uso para encapsular as regras de negócio. Ou seja, nós não implementamos o código diretamente nos controllers, models, jobs. Todo ponto de entrada delega a operação para um caso de uso.
Testes: Rspec, factory bot, shoulda matchers.
Namespaces: Curtimos muito modularizar o código, ao agrupar classes, módulos, constantes que tenham relação ao conceito / domínio que representam.
Bons nomes para métodos, constantes (classes e módulos), namespaces.
Garanta que o setup seja fácil e que tanto a aplicação quanto o teste rodem. Pode não parecer, mas recebemos diversos testes que ao fazer o git clone e realizar o setup o projeto não rodava de primeira. Nosso time teve de ajustar N entregas para conseguir avaliar o que foi feito (mas isso não é legal e tira pontos de quem aplicou).
PS: Sinta-se a vontade para apresentar sugestões, práticas na qual você acredita serem melhores. ;)
The text was updated successfully, but these errors were encountered: