Aplicação CLI desenvolvida como desafio técnico para uma vaga de Engenheiro de Software na Nubank.
Após mais de 4 anos estudando e trabalhando com Java, o que me motivava a aprender coisas novas sempre foi o Trabalho, foi assim que eu aprendi a lidar com Javacript e Python. Cerca de dois meses atrás resolvi aprender uma nova linguagem de programação e optei pelo Ruby onde vi neste desafio uma grande oportunidade para exercitar meus conhecimentos nesta nova linguagem. Para construção dos testes unitarios foi usado o framework RSpec por ser bastante comum no Ruby, neste quisito confesso que não tenho tantos conhecimentos como no uso de Junit ou Mockito para o Java, mas consegui desenvolver alguns cenarios através de pesquisas.
Por ser uma aplicação relativamente simples e sem muita regra ou complexidade envolvida, optei por usar o bom e velho padrão de design MVC Model-View-Controller, onde as camadas da aplicação estão organizadas da seguinte maneira:
├── inputs/ # Contem arquivos de entrada para testes
├── spec/ # Contem os testes do projeto
├── src/ # Diretorio principal da aplicacao
│ ├── models/
│ │ ├── operacao.rb # Representa o objeto da operacao de compra/venda
│ │ ├── imposto_calculator.rb # Calcula os impostos das operacoes
│ ├── services/
│ │ ├── imposto_processor.rb # Processa as operacoes e chama o calculo de imposto
│ ├── views/
│ │ ├── output.rb # Retorna o resultado
│ └── main.rb # Classe principal responsavel pela execução da aplicação
├── Gemfile # Dependências do projeto
└── README.md # Documentação
-
Instalar Ruby: Baixe e instale o Ruby via RubyInstaller.
-
Instalar o Bundler: Após instalar o Ruby, execute o seguinte comando para instalar o Bundler:
gem install bundler
-
Instalar Dependências: No diretório do projeto, execute:
bundle install
-
Rodar os Testes: Agora você pode rodar os testes com
bundle exec rspecou outro comando de teste mencionado.
-
Instalar Ruby: Para instalar o Ruby no Ubuntu/Debian, execute:
sudo apt update sudo apt install ruby-full
-
Instalar o Bundler: Após instalar o Ruby, instale o Bundler com:
gem install bundler
-
Instalar Dependências: No diretório do projeto, execute:
bundle install
-
Rodar os Testes: Agora você pode rodar os testes com
bundle exec rspec.
-
Instalar Ruby: Se necessário, use o Homebrew para instalar a versão mais recente do Ruby:
brew install ruby
-
Instalar o Bundler: Instale o Bundler com o seguinte comando:
gem install bundler
-
Instalar Dependências: No diretório do projeto, execute:
bundle install
-
Rodar os Testes: Agora você pode rodar os testes com
bundle exec rspec.
Para rodar a aplicação, use o seguinte comando, passando o arquivo de entrada contendo as transações:
ruby src/main.rb < inputs/caso_desejado.txtSubstitua caso_desejado.txt pelo arquivo que contém os dados de entrada localizado na pasta inputs.
Este projeto utiliza o framework de testes RSpec para testar as funcionalidades da aplicação.
Para rodar todos os testes do projeto, execute o comando:
bundle exec rspecPara rodar um teste específico pelo nome, use a flag --example e passe o nome do teste entre aspas. Exemplo:
bundle exec rspec --example "cenario 2"Para rodar os testes de uma classe específica, passe o caminho do arquivo de teste como argumento. Exemplo:
bundle exec rspec spec/imposto_calculator_spec.rb