El proyecto está hecho con Laravel 5.8 y usa Faker para generar datos en las pruebas unitarias y Guzzle para las peticiones a su API.
- Se utilizó
TDD
para los casos de prueba de crear un pago y crear un comprador. - Se utilizó un
Observer
de Laravel para crear la fecha de expiración de la transacción con una hora de duración automáticamente se registre un pago. - Se creó un
ServiceProvider
llamadoPlaceToPayServiceProvider
para registar elFacade PlaceToPay
y así llamar globalmente alHelper PlaceToPay
, clase encargada de realizar las peticiones a su API.
La aplicación esta desplegada a Heroku en el siguiente enlace PlaceToPay
git clone https://github.com/paleox/placetopay.git
Una vez se haya clonado el proyecto se deben instalar las dependencias de Laravel
cd placetopay
composer install
Como prerrequisito la base de datos debe estar creada. Se debe crear un archivo llamado .env
partiendo de la estructura del archivo .env.example
y se deben configurar las siguientes variables con sus respectivos valores:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=placetoplay
DB_USERNAME=root
DB_PASSWORD=
PTP_LOGIN=login
PTP_SECRET=secretKey
PTP_ENDPOINT=https://test.placetopay.com/redirection/
PTP_LOCALE=es_CO
Una vez configurado es necesario generar el key
de la aplicación:
php artisan key:generate
**Los parámetos PTP
son opcionales ya que cuentan con su propio archivo de configuración ubicado en placetopay\config\placetopay.php
Las pruebas unitarias se encuentran en placetopay\tests\Feature\Http\Controllers
. Para ejecutar las pruebas unitarias se usan los comandos:
.\vendor\bin\phpunit.bat tests\Feature\Http\Controllers\PaymentControllerTest.php
.\vendor\bin\phpunit.bat tests\Feature\Http\Controllers\BuyerControllerTest.php
Si se desea ejecutar un método en especifico se usa --filter nombre_metodo
por ejemplo:
.\vendor\bin\phpunit.bat tests\Feature\Http\Controllers\PaymentControllerTest.php --filter can_create_a_payment
**Es importante recordar que cada vez que se ejecuten las pruebas la base de datos será reseteada por el uso del trait RefreshDatabase
php artisan migrate --seed
php artisan serve