O Events App é um aplicativo baseado no Teste de para desenvolvedor(a) iOS do Woop Sicredi. Trata-se de um aplicativo em Swift que consome uma REST API para exibir uma lista de eventos, mostrar detalhe dos eventos, permitir realizar o check in em um evento e, por fim, compartilhar o evento.
MVVM (Model-View-ViewModel) foi a arquitetura adodata para este projeto com o intuito evitar ViewControllers massivas, garantir boa testabilidade do projeto e por compreender a necessidade do projeto
Foi configurado um CI para este projeto utilizando o Github Actions, com o intuito de evitar a regressão de código. Este CI roda tanto os testes quanto o build da aplicação. O status atual do CI é:
Para o desenvolvimento da interface do projeto foi escolhido o UIKit utilizando a abordagem de ViewCode. O ViewCode foi escolhido pois:
- Permite melhor reuzo e componentização;
- Permite melhor controle sobre o fluxo de inicialização;
- Melhor para trabalhar em equipe (não tem storyboard merge hell).
Até o momento foram criados 16 testes automatizados para este projeto:
- 4 Testes são testes focados na interface da aplicação;
- 12 Testes são focados na parte de networking e nas viewmodels, visto que contém a lógica crucial do aplicativo;
Imagens geradas nos testes de Snapshot:
Todos os testes executando com sucesso:
Foi desenvolvida uma "camada", utilizando Combine, responsável pelo networking, visto que o projeto trabalha essencialmente com uma REST API.
Destaca-se a utilização do paradigma Protocol Oriented Programming na construção deste módulo, que permite criar código de alta qualidade diminuindo o número de erros e aumentando a manutenibilidade.
Exemplo da utilização da técnica de Type-Erasure utilizada para implementar a Injeção de DepeNdência nesta camada:
O Swift Package Manager foi a ferramenta escolhida para o gerenciamento das depedências do projeto, por trazer o benefício de ser completamente integrado com o Xcode, tornando o trabalho mais produtivo. Abaixo estão as depedências deste projeto: