Skip to content

marsanchezs/countries

Repository files navigation

🇨🇱 Countries App

Countries App es una aplicación Android que muestra una lista de banderas de países. Al hacer clic en una bandera, se muestra un detalle del país seleccionado. Además, la pantalla principal cuenta con un buscador para filtrar los países de manera sencilla.

📱 Capturas de Pantalla

Lista de países Detalle del país

🎥 Vista previa

Vista previa

🛠️ Tecnologías utilizadas

  • Kotlin: Lenguaje de programación principal.
  • Jetpack Compose: Para el diseño de la UI de forma declarativa.
  • Navigation Component: Manejo de la navegación entre pantallas.
  • Dagger Hilt: Inyección de dependencias para una mejor modularidad.
  • Retrofit: Para el consumo de APIs de manera eficiente..
  • MockK: Para la creación de mocks en pruebas unitarias.

🏗️ Arquitectura MVVM

Se ha utilizado la arquitectura MVVM (Model-View-ViewModel) debido a sus múltiples ventajas:

  • Separación de responsabilidades: La UI no maneja directamente la lógica de negocio, lo que facilita el mantenimiento y la escalabilidad.
  • Facilidad para realizar pruebas unitarias: Al mantener la lógica de negocio en ViewModels, es más sencillo testear sin depender de la UI.
  • Reutilización de código: ViewModels pueden ser utilizados en diferentes composables sin generar dependencias innecesarias.
  • Compatibilidad con Jetpack Compose: MVVM se integra bien con StateFlow y LiveData, lo que permite una UI reactiva y eficiente.

🧪 Pruebas unitarias con MockK

Las pruebas unitarias se han desarrollado siguiendo el patrón Given-When-Then, lo que mejora la legibilidad y mantenimiento del código:

  • Given: Se establece el estado inicial o las precondiciones de la prueba.
  • When: Se ejecuta la acción que se desea testear.
  • Then: Se verifican los resultados esperados.

About

Aplicación Android para ver, buscar y explorar detalles de países a través de sus banderas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages