|
1 | 1 | setup() { |
2 | 2 | set -eu -o pipefail |
3 | | - |
4 | | - export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.." |
5 | | - export TESTDIR=~/tmp/ddev-laravel-worker |
| 3 | + export DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")" >/dev/null 2>&1 && pwd)/.." |
| 4 | + export TESTDIR=~/tmp/test-laravel-queue |
6 | 5 | mkdir -p $TESTDIR |
7 | | - export PROJNAME=ddev-laravel-worker |
| 6 | + export PROJNAME=test-laravel-queue |
8 | 7 | export DDEV_NON_INTERACTIVE=true |
9 | | - ddev delete -Oy ${PROJNAME} || true |
| 8 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true |
10 | 9 | cd "${TESTDIR}" |
11 | | - ddev config --project-name=${PROJNAME} |
12 | | - ddev start -y |
13 | | - echo "# ddev started at $(date)" >&3 |
| 10 | +} |
| 11 | + |
| 12 | +health_checks() { |
| 13 | + ddev exec "curl -s https://localhost:443/" |
| 14 | +} |
| 15 | + |
| 16 | +queue_checks() { |
| 17 | + # Add a route that dispatches a job when hit |
| 18 | + echo "Route::get('test-dispatch', function () { |
| 19 | + dispatch(function () { |
| 20 | + logger('hello from test-dispatch'); |
| 21 | + }); |
| 22 | +});" >> ./routes/web.php |
| 23 | + |
| 24 | + # Visit the new route to trigger the dispatch |
| 25 | + ddev exec "curl -s https://localhost:443/test-dispatch" |
| 26 | + # We'll wait a few seconds to allow the queue worker to pick and process the job. |
| 27 | + sleep 5 |
| 28 | + |
| 29 | + if ! grep -q "hello from test-dispatch" ./storage/logs/laravel.log; then |
| 30 | + exit 1; |
| 31 | + fi |
14 | 32 | } |
15 | 33 |
|
16 | 34 | teardown() { |
17 | 35 | set -eu -o pipefail |
18 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
19 | | - ddev delete -Oy ${PROJNAME} |
| 36 | + cd ${TESTDIR} || (printf "unable to cd to ${TESTDIR}\n" && exit 1) |
| 37 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 |
20 | 38 | [ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR} |
21 | 39 | } |
22 | 40 |
|
23 | 41 | @test "install from directory" { |
24 | 42 | set -eu -o pipefail |
25 | 43 | cd ${TESTDIR} |
26 | 44 | echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
| 45 | + ddev config --project-name=${PROJNAME} |
| 46 | + ddev start -y >/dev/null |
27 | 47 | ddev get ${DIR} |
28 | 48 | ddev restart |
| 49 | + health_checks |
| 50 | +} |
29 | 51 |
|
30 | | - sleep 61 |
31 | | - # Make sure cron process is running |
32 | | - ddev exec 'sudo killall -0 cron' |
| 52 | +@test "install from release" { |
| 53 | + set -eu -o pipefail |
| 54 | + cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
| 55 | + echo "# ddev get tyler36/ddev-laravel-worker with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
| 56 | + ddev config --project-name=${PROJNAME} |
| 57 | + ddev start -y >/dev/null |
| 58 | + ddev get tyler36/ddev-laravel-worker |
| 59 | + ddev restart >/dev/null |
| 60 | + health_checks |
33 | 61 | } |
34 | 62 |
|
35 | | -# @test "install from release" { |
36 | | -# set -eu -o pipefail |
37 | | -# cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
38 | | -# echo "# ddev get tyler36/ddev-laravel-worker with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
39 | | -# ddev get tyler36/ddev-laravel-worker |
40 | | -# ddev restart |
41 | | - |
42 | | -# sleep 61 |
43 | | -# # Make sure cron process is running |
44 | | -# ddev exec 'sudo killall -0 cron' |
45 | | -# } |
| 63 | +@test "it processes jobs in Lavarel 11" { |
| 64 | + set -eu -o pipefail |
| 65 | + cd ${TESTDIR} |
| 66 | + echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
| 67 | + # Setup a Laravel project |
| 68 | + ddev config --project-type=laravel --docroot=public |
| 69 | + ddev composer create --prefer-dist laravel/laravel:^11 |
| 70 | + ddev exec "php artisan key:generate" |
| 71 | + # Get addon and test |
| 72 | + ddev get ${DIR} |
| 73 | + ddev restart |
| 74 | + |
| 75 | + health_checks |
| 76 | + queue_checks |
| 77 | +} |
0 commit comments