1
0
Fork 0
mirror of https://github.com/archtechx/jobpipeline.git synced 2025-12-12 06:44:03 +00:00

Possibility to change the default configurations for the queue jobs. (#13)

* Add $queue attribute

This code enables me to change the queue name that the JobPipeline will be pushed to.

Now I can do something like this:
```php
JobPipeline::make([
    Jobs\CreateDatabase::class,
    Jobs\MigrateDatabase::class,
    // Jobs\SeedDatabase::class,

    // Your own jobs to prepare the tenant.
    // Provision API keys, create S3 buckets, anything you want!

])->send(function (Events\TenantCreated $event)
{
    return $event->tenant;
})->onQueue('another-queue')
    ->shouldBeQueued()
```

* Add .idea directory to gitignore

* The following methods where added: onConnection, onQueue, delay, tries, shouldBeQueuedOn. The signature of shouldBeQueued was changed too.

* reuse shouldBeQueuedOn

* updating docs

* added timeout

* docs updated

* .phpunit.cache/ added to gitignore

* tests for shouldQueueOn method

* leave only shouldBeQueued method

* update README

* remove unnecessary property declarations

* Delete  jobpipelinetest.json

* add jobpipelinetest.json as a empty file

* update readme

* simplify tests

* improve code

* improve readme

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
This commit is contained in:
Jonathan Prass Martins 2023-03-16 18:14:36 -03:00 committed by GitHub
parent bfc53f6dd6
commit d7a9e6796e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 3 deletions

View file

@ -80,6 +80,32 @@ class JobPipelineTest extends TestCase
$this->assertSame('bar', $this->valuestore->get('foo'));
}
/** @test */
public function job_pipelines_can_use_a_specific_queue()
{
Event::listen(TestEvent::class, JobPipeline::make([
FooJob::class,
])->send(function () {
return $this->valuestore;
})->shouldBeQueued(queue: 'another')->toListener());
$this->assertFalse($this->valuestore->has('foo'));
event(new TestEvent(new TestModel()));
$this->artisan('queue:work --once --queue=default');
sleep(1);
// Job hasn't run since it was pushed to the 'another' queue
$this->assertNull($this->valuestore->get('foo'));
$this->artisan('queue:work --once --queue=another');
sleep(1);
$this->assertSame('bar', $this->valuestore->get('foo'));
}
/** @test */
public function job_pipeline_executes_jobs_and_passes_the_object_sequentially()
{
@ -133,7 +159,7 @@ class JobPipelineTest extends TestCase
// Foo job is not excuted
$this->assertFalse($this->valuestore->has('foo'));
}
/** @test */
public function the_pipeline_can_execute_failed_method_on_job()
{