Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOSTest][Kaspper] Matheus Fusco #114

Open
wants to merge 28 commits into
base: master
Choose a base branch
from

Conversation

matheusfusco
Copy link

Matheus Fusco - Desafio Banco Safra - Kaspper

Repositório com o código referente ao desafio proposto para a vaga de iOS no Banco Safra - Kaspper.

Setup

Solução adotada para gerenciador de dependência: Cocoapods

  • Manual de instalação em link.
  • Entrar na pasta via terminal .../TesteiOSV2/MyBankApp/ e rodar o comando pod install
  • Após a instalação, rodar o comando open MyBankApp.xcworkspace
  • PS: Acabei não utilizando nenhuma dependência (pelo menos por enquanto), deixei o mais nativo possível, incluindo na parte de chamadas

Como rodar

  • Após a abertuda o MyBankApp.xcworkspace, rodar o app com o comando Command + R
  • PS: Para que a navegação funcione corretamente, no arquivo LoginInteractor é necessário descomentar a linha 19, e comentar as linhas 21 até 32. Motivo: Não consegui fazer a API de Login funcionar, então deixei a linha 19 pra fins de navegação do aplicativo

Testes

Solução adotada para os testes unitários: XCTests
Solução adotada para testes de UI: SnapshotTesting

  • Após a abertura do projeto, rodar Command + U

Observações

  • Testes referentes a Home ainda não foram finalizados, constando somente o teste da HomeService
  • Testes referentes a tela de Login foram todos finalizados, incluindo todas camadas da arquitetura
  • Testes das camadas de Network foram todos finalizados
  • Para que os testes funcionem corretamente, no arquivo LoginInteractor é necessário comentar a linha 19, e descomentar as linhas 21 até 32. Motivo: Não consegui fazer a API de Login funcionar, então deixei a linha 19 pra fins de navegação do aplicativo

Observações Gerais

  • Nunca havia utilizado a arquitetura CleanSwift, espero que tenha feito um bom código
  • A API de Login não estava funcionando, defini um retorno LoginResponse e seus respectivos campos e utilizei um mock para apresentar a tela Home
  • A API de /statements não funcionava com o /{id} no final, então modifiquei a URL para igual a collection enviada para que funcionasse o retorno (sem o /{id} no final)

Próximos passos

  • Finalizar os testes referente a Home, incluindo testes unitários
  • Ajustar validação dos campos de texto e retornos exibidos ao usuário
  • Adicionar Loading tanto na tela de Login quanto na Home e tratar possíveis cenários de erro na tela

Matheus Pacheco Fusco added 23 commits June 29, 2023 20:21
…ior.

Criando classe base de Network, e já deixando pronto Login e Home com seus respectivos ResponseModels.
…ests. Atualizando URL dos testes. Atualizando AppDelegate e SceneDelegate.
…ty of function types in instance method 'dataTask(with:completionHandler:)' does not match requirement in protocol 'URLSessionProtocol'
…avegação para a próxima tela e o dado a ser passado para a HomeViewController. Proximos passos: Criar os testes da LoginViewController.
…dataStore. Conformando o LoginInteractor ao LoginDataStore. Ajustando protocolos e funções para se adequar ao CleanSwift.
…NavigationController.

Adicionando imagem do botão de sair.
Adicionando Extension de Double para formatar o valor da célula.
Adicionando Extension de String para formatar a data.
Adicionando Extension de UIColor para utilizar hex color.
Adicionando Extension de UIFont para facilitar o reuso das fontes do projeto.
Adicionando StatementTableViewCell.
Criando tela da Home e ajustando a navegação da tela de Login para a Home.
…e statements, e do modelo de resposta da LoginService.

protocol DispatchQueueProtocol e respectivo spy criado para auxiliar no futuro teste da HomeViewController.
Init da HomeViewController ajustado para poder ficar testável.
NavigationSpy adicionada.
Pequenas alterações necessárias para os testes.
Validando campos de texto na LoginViewController, criando extensions e validações.
TODO: melhorar lógica para exibir erro específico no alerta.
@matheusfusco matheusfusco marked this pull request as ready for review July 3, 2023 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant