Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
39923cd
Implementação da base do projeto Android em java
Jul 9, 2020
d3d8e9a
Inclusão da base do MVP no projeto e configuração mínima do DataBinding
Jul 9, 2020
e66cb1b
Implementação da configuração mínima do retrofit para consumo de APIs
Jul 9, 2020
8b8cc37
Inclusão da base da tela de login e suas devidas dependências
Jul 9, 2020
14e2eca
Inclusão do consumo da API para os statements
Jul 9, 2020
7ceeb4e
Inclusão da classe de domínio de Statement e seu converter
Jul 9, 2020
7f605c9
Inclusão da base da tela de statements e suas devidas dependências
Jul 9, 2020
efa0b95
Inclusão do consumo da api para a tela de statements
Jul 9, 2020
27fd071
Inclusão do app bar na tela de statements
Jul 9, 2020
bd62f2d
Inclusão do loading da busca de statements e feedback para o usuário
Jul 9, 2020
5fa9c90
Implementação do login utilizando shared preferences e refatoração do…
Jul 10, 2020
b764481
Alteração dos retornos de erro na API
Jul 10, 2020
92235b2
Alteração do uso do EditText para o uso do TextInputEditText do mater…
Jul 10, 2020
134cb76
Inclusão do helper para validação de campos, inclusão da validação do…
Jul 10, 2020
54555bf
Inclusão do helper de formatação de dados e inclusão do saldo do usuá…
Jul 10, 2020
100bc50
Implementação da funcionalidade de logout do sistema
Jul 10, 2020
2ebbc8e
Implementação da exibição do último usuário salvo, caso exista, na te…
Jul 10, 2020
951ba25
Inclusão dos testes unitários para o os métodos do FieldHelper
Jul 10, 2020
632ce3d
Inclusão dos testes unitários para o os métodos do FormatHelper
Jul 10, 2020
5be4329
Inclusão do runner de todos os testes do sistema
Jul 10, 2020
1a5a30d
Inclusão dos testes unitários para o os métodos de converter de dados
Jul 10, 2020
3b68b11
Inclusão das fontes do aplicativo e refatoração do código para implem…
Jul 10, 2020
b925f50
Alteração de strings do sistema
Jul 10, 2020
0aa8502
Inclusão do processo de criação do projeto no README.md
Jul 10, 2020
c3e2b1b
Update README.md
DenisMagno Jul 10, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,44 @@
# Teste - Accenture
Projeto de teste para seleção da empresa Accenture para o cargo de Desenvolvedor Mobile Android

# Procedimentos para execução do projeto
O projeto android encontra-se na pasta "TesteAndroid".
Para execução do projeto é necessário abrí-lo na IDE Android Studio.

# Procedimentos para execução dos testes unitários
Foi implementada uma classe para realização de todos os testes unitários do sistema
em 'com.accenture.android.app.testeandroid.TestSuite'.

Basta executar esta classe e todos os testes implementados serão processados.

# Implementação
Como forma de implementação da solicitação de exibição na tela de login do último usuário salvo, foi utilizado o componente nativo da SDK do Android “SharedPreferences”.
Para exibição do último usuário salvo no sistema, foi definida na tela de Login uma pequena descrição com o nome do usuário, sendo esse buscado do SharedPreferences do smartphone. Segue exemplo:

![login_image](login_print.png)

Obs.: Caso o usuário vá para a segunda tela do aplicativo onde ele clique no botão de logout ![logout_image](logout_print.png) , ele retornará para a tela de login e o nome do usuário não será apresentado, pois os dados do usuário são apagados do sistema. Para que essa descrição com o nome seja visualizada, é necessário efetuar o login ao menos uma vez no aplicativo, sair sem se deslogar (Fechar o aplicativo) e entrar novamente.
No meu entendimento, este desafio seria para testar a utilização de autenticação e a forma de guardar dados no smartphone para posterior processamento. Sendo assim, a implementação foi feita pensando em um caso de uso real, onde se o usuário não fizesse o logout, quando ele abrisse o aplicativo novamente e fosse para a tela de login já haveria dados pré-cadastrados no sistema e a autenticação seria feita de forma automática. Porém, para exemplificar, apresento apenas o nome do usuário na tela.

## Arquitetura
Para confecção do aplicativo foi utilizado a arquitetura MVP (Model View Presenter).
Essa arquitetura foi escolhida por ser um padrão amplamente utilizado em desenvolvimento mobile, com fácil entendimento e uma boa separação de responsabilidades.

Definição rápida dos diretórios criados:
* data: Contém todo o código referente a dados do sistema (Gerenciamento de consumo de APIs e conversores de dados)
* domain: Contém as classes de domínio. Nossas models, por assim dizer.
* helpers: Contém classes que irão ajudar no desenvolvimento do sistema que podem ser reutilizadas em qualquer local e que não possuem nenhuma dependência com componentes do SDK do Android (Soma, subtração, formatação de strings, etc...).
* presentation: Contém toda a lógica de cada tela, junto com seus respectivos presenters.
* utils: Contém classes que são um pouco mais complexas ou elaboradas que podem ser reutilizadas em qualquer local, porém possuem uma dependência do SDK do Android (SharedPreferences, por exemplo).

## Teste unitários
Para os testes unitários foi utilizado o JUnit por ser nativo do Java e possuir uma quantidade grande de ferramentas para serem utilizadas.

## Outras bibliotecas
Para consumo das APIs foi utilizado o framework Retrofit2. Esse framework abstrai uma boa parte da lógica de acessos HTTP e ajuda no gerenciamento das rotas que serão utilizadas.

Para listagem dos 'statements' foi utilizada a biblioteca RecyclerView.

# Show me the code

Esse repositório contem todo o material necessário para realizar o teste:
Expand Down
14 changes: 14 additions & 0 deletions TesteAndroid/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
164 changes: 164 additions & 0 deletions TesteAndroid/.idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading