Este proyecto es una aplicación PHP que utiliza Docker para la contenedorización y Doctrine para la gestión de la base de datos. Proporciona una configuración sencilla para el desarrollo y la ejecución de pruebas.
- Docker
- Docker Compose
- Make
- Clona el repositorio:
git clone https://github.com/wdevmaster/docfav-test.git
cd docfav-testSi prefieres usar make para simplificar la configuración inicial del proyecto.
Ejecuta el comando de configuración:
make setupEsto realizará las siguientes acciones:
- Copiar el archivo .env.example a .env
- Construir las imágenes de Docker y levantar los servicios
- Instalar las dependencias de PHP
- Crear la base de datos
- Ejecutar las migraciones de la base de datos
Para ejecutar las pruebas, utiliza uno de los siguiente comando:
make testCopia el archivo de ejemplo .env.example a .env:
cp .env.example .envConstruye las imágenes de Docker y levanta los servicios:
docker compose up -d --buildInstala las dependencias de PHP:
docker compose exec app composer installCrea la base de datos:
docker compose exec mysql mysql -u root -p$(grep DB_PASSWORD .env | cut -d '=' -f2) -e "CREATE DATABASE IF NOT EXISTS $(grep DB_DATABASE .env | cut -d '=' -f2);"Ejecuta las migraciones de la base de datos:
docker compose exec app ./doctrine migrations:migrate --no-interaction --all-or-nothingPara ejecutar las pruebas, utiliza uno de los siguiente comando:
docker compose exec app ./vendor/bin/phpunit- config: Archivos de configuración.
- docker: Archivos relacionados con Docker.
- migrations: Archivos de migraciones de la base de datos.
- public: Punto de entrada de la aplicación.
- src: Código fuente de la aplicación.
- Application: Código relacionado con la lógica de la aplicación.
- PortIn: Interfaces son utilizadas para desacoplar la lógica de la aplicación de los detalles de implementación de la infraestructura.
- Domain: Código relacionado con la lógica del dominio.
- Entity: Entidades del dominio.
- Event: Eventos del dominio.
- Exception: Excepciones del dominio.
- Repository: Repositorios del dominio.
- ValueObject: Objetos de valor del dominio.
- Infrastructure: Código relacionado con la infraestructura.
- Exception/ExceptionHandler.php: Esta excepciones manejan errores específicos que ocurren permitiendo una gestionar los errores y una respuesta adecuada a los fallos del sistema.
- Persistence: Código relacionado con la persistencia de datos.
- Entity: Entidades de persistencia.
- Mapper/UserMapper.php: Estos mapeadores se encargan de convertir las entidades del dominio en entidades de persistencia y viceversa.
- Service: Servicios de la infraestructura.
- Presentation: Esta capa se encarga de manejar la interacción con el usuario final. Incluye los controladores que gestionan las solicitudes del usuario y los objetos de transferencia de datos (DTO) que facilitan la comunicación entre las demás capas.
- Controller: Controladores de la presentación.
- DTO: Objetos de transferencia de datos.
- Application: Código relacionado con la lógica de la aplicación.
- tests: Pruebas unitarias y de integración.
- routes.php: Este archivo define las rutas de la aplicación.
El resultado del UserRegisteredEvent se está almacenando en el archivo de log event.log. Asegúrate de revisar este archivo para verificar los eventos registrados.