App em usando a api do Chuck Norris https://api.chucknorris.io/.
Estou usando Clean Architecture baseada na implementação do Antonio Leiva e da BufferApp.
Nesse módulo temos os models(entities).
Nesse módulo temos as classes Android e a UI.
Nesse módulo temos os interfaces / datasources, api e repositórios.
Nesse módulo fazemos as gravação dos dados offline, esse módulo depende do Android, pois usamos Room para gravação dos dados. Usamos um mapper para transformar entidade do Room para entidade da aplicação.
Nesse módulo temos os usescases / interactors.
Criamos o módulo cache para não colocar depedência do Android no módulo data. O módulo data tem uma interface para ser implementada no cache.
Usamos um mapper para que o mapemento da @Entity do Room no módulo cache para a entity da aplicação. Assim evitando de passar @Entity onde os módulos que não tem Android.
Usamos o Koin para injeção de depêndencias, por achar ele de simples uso e atende a necessidade.
Usamos o Bitrise.io para integração contínua.
Temos testes nos módulos: app, cache, data, e usecases.
Nesse módulo testamos os *ViewModels *e as Activities. No teste FactsActivityTest, verificamos o tamanho do texto no RecyclerView esta de acordo com a lógica do tamanho da fonte e se a categoria esta sendo setada como UNCATEGORIZED. Em SearchActivityTest, verificamos se existem termos duplicados no RecyclerView de buscas recentes.
Nesse módulo testamos a gravação e carregamento dos dados no Room.
Nesse módulo testamos os repositórios.
Nesse módulo testamos os usescases.