Tests
=====

Environment
-----------

In order to run tests, you need to install Docker, Docker Compose and the `make` utility. Docker configuration files are 
in `tests/docker` and Docker Compose file is `tests/docker-compose.yml`. There are configurations for different versions 
of PHP (5.6, 7.0, 7.1, 7.2, 7.3). You need to create `.env` file to specify where the `docker-compose.yml` file is. You 
can create `.env` file from `.env.example` in the root directory of the project.

Running Tests
-------------

To run tests execute the following command:

```bash
# for all PHP versions
make test

# for PHP 7.3 only
make test73
```

If you need to pass options to `phpunit` use the following commands (for example, to run only one test file):
```bash
docker-compose build --pull php73
docker-compose run php73 vendor/bin/phpunit tests\\drivers\\sqs\\QueueTest /code/tests/drivers/sqs/QueueTest.php
docker-compose down
```

Some tests can be disabled by default for various reasons (for example, the AWS SQS test require a queue set up in AWS).
The test checks `AWS_SQS_ENABLED` environment variable (see `\tests\drivers\sqs\QueueTest::setUp`). If you want to 
run that test you need to set this variable to `1`. You can specify environment variables that you need to pass to 
the container in the `.env` file in the base directory (see `.env.example`). AWS SQS test requires queue credentials that you also 
need to pass to the container via `.env` file (see `tests/app/config/main.php`).

```bash
# .env

AWS_SQS_ENABLED=1
AWS_KEY=KEY
AWS_SECRET=SECRET
AWS_REGION=us-east-1
AWS_SQS_URL=https://sqs.us-east-1.amazonaws.com/234888945020/queue1
```

```bash
# AWS SQS test will not be skipped now
make test73
```