Skip to content

Commit 62861e8

Browse files
committed
Switch to old style factories for older Laravel support
1 parent 8c3dc97 commit 62861e8

File tree

5 files changed

+57
-127
lines changed

5 files changed

+57
-127
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"require-dev": {
1717
"orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0",
1818
"nunomaduro/larastan": "^1.0 || ^2.0",
19-
"thecodingmachine/phpstan-safe-rule": "^1.2"
19+
"thecodingmachine/phpstan-safe-rule": "^1.2",
20+
"laravel/legacy-factories": "^1.3"
2021
},
2122
"autoload": {
2223
"psr-4": {

factories/CrossJoinSequence.php

Lines changed: 0 additions & 27 deletions
This file was deleted.

factories/StackkitCloudTaskFactory.php

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,19 @@
44

55
namespace Factories;
66

7-
use Illuminate\Database\Eloquent\Factories\Factory;
7+
/** @var \Illuminate\Database\Eloquent\Factory $factory */
8+
89
use Illuminate\Support\Str;
910
use Stackkit\LaravelGoogleCloudTasksQueue\StackkitCloudTask;
11+
use Faker\Generator as Faker;
1012

11-
class StackkitCloudTaskFactory extends Factory
12-
{
13-
protected $model = StackkitCloudTask::class;
14-
15-
public function definition()
16-
{
17-
return [
18-
'status' => 'queued',
19-
'queue' => 'barbequeue',
20-
'task_uuid' => (string) Str::uuid(),
21-
'name' => 'SimpleJob',
22-
'metadata' => '{}',
23-
'payload' => '{}',
24-
];
25-
}
26-
27-
/**
28-
* Add a new cross joined sequenced state transformation to the model definition.
29-
*
30-
* @param array $sequence
31-
* @return static
32-
*/
33-
public function crossJoinSequence(...$sequence)
34-
{
35-
return $this->state(new CrossJoinSequence(...$sequence));
36-
}
37-
}
13+
$factory->define(StackkitCloudTask::class, function (Faker $faker) {
14+
return [
15+
'status' => 'queued',
16+
'queue' => 'barbequeue',
17+
'task_uuid' => (string) Str::uuid(),
18+
'name' => 'SimpleJob',
19+
'metadata' => '{}',
20+
'payload' => '{}',
21+
];
22+
});

tests/CloudTasksMonitoringTest.php

Lines changed: 35 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Tests;
44

5-
use Factories\StackkitCloudTaskFactory;
65
use Google\Cloud\Tasks\V2\RetryConfig;
76
use Illuminate\Support\Carbon;
87
use Stackkit\LaravelGoogleCloudTasksQueue\CloudTasksApi;
@@ -19,7 +18,7 @@ class CloudTasksMonitoringTest extends TestCase
1918
public function test_loading_dashboard_works()
2019
{
2120
// Arrange
22-
StackkitCloudTaskFactory::new()->create();
21+
factory(StackkitCloudTask::class)->create();
2322

2423
// Act
2524
$response = $this->getJson('/cloud-tasks-api/dashboard');
@@ -40,13 +39,15 @@ public function it_counts_the_number_of_tasks()
4039
$thisHour = now()->startOfHour();
4140
$thisDay = now()->startOfDay();
4241

43-
StackkitCloudTaskFactory::new()
44-
->crossJoinSequence(
45-
[['status' => 'failed'], ['status' => 'queued']],
46-
[['created_at' => $thisMinute], ['created_at' => $thisHour], ['created_at' => $thisDay], ['created_at' => $lastMinute]]
47-
)
48-
->count(8)
49-
->create();
42+
factory(StackkitCloudTask::class)->create(['status' => 'queued', 'created_at' => $thisMinute]);
43+
factory(StackkitCloudTask::class)->create(['status' => 'queued', 'created_at' => $thisHour]);
44+
factory(StackkitCloudTask::class)->create(['status' => 'queued', 'created_at' => $thisDay]);
45+
factory(StackkitCloudTask::class)->create(['status' => 'queued', 'created_at' => $lastMinute]);
46+
47+
factory(StackkitCloudTask::class)->create(['status' => 'failed', 'created_at' => $thisMinute]);
48+
factory(StackkitCloudTask::class)->create(['status' => 'failed', 'created_at' => $thisHour]);
49+
factory(StackkitCloudTask::class)->create(['status' => 'failed', 'created_at' => $thisDay]);
50+
factory(StackkitCloudTask::class)->create(['status' => 'failed', 'created_at' => $lastMinute]);
5051

5152
// Act
5253
$response = $this->getJson('/cloud-tasks-api/dashboard');
@@ -67,19 +68,14 @@ public function it_counts_the_number_of_tasks()
6768
public function tasks_shows_newest_first()
6869
{
6970
// Arrange
70-
$tasks = StackkitCloudTaskFactory::new()
71-
->count(2)
72-
->sequence(
73-
['created_at' => now()->subMinute()],
74-
['created_at' => now()],
75-
)
76-
->create();
71+
factory(StackkitCloudTask::class)->create(['created_at' => now()->subMinute()]);
72+
$task = factory(StackkitCloudTask::class)->create(['created_at' => now()]);
7773

7874
// Act
7975
$response = $this->getJson('/cloud-tasks-api/tasks');
8076

8177
// Assert
82-
$this->assertEquals($tasks[1]->task_uuid, $response->json('0.uuid'));
78+
$this->assertEquals($task->task_uuid, $response->json('0.uuid'));
8379
}
8480

8581
/**
@@ -88,13 +84,8 @@ public function tasks_shows_newest_first()
8884
public function it_shows_tasks_only_from_today()
8985
{
9086
// Arrange
91-
$tasks = StackkitCloudTaskFactory::new()
92-
->count(2)
93-
->sequence(
94-
['created_at' => today()],
95-
['created_at' => today()->subDay()],
96-
)
97-
->create();
87+
factory(StackkitCloudTask::class)->create(['created_at' => today()]);
88+
factory(StackkitCloudTask::class)->create(['created_at' => today()->subDay()]);
9889

9990
// Act
10091
$response = $this->getJson('/cloud-tasks-api/tasks');
@@ -109,13 +100,8 @@ public function it_shows_tasks_only_from_today()
109100
public function it_can_filter_only_failed_tasks()
110101
{
111102
// Arrange
112-
StackkitCloudTaskFactory::new()
113-
->count(2)
114-
->sequence(
115-
['status' => 'pending'],
116-
['status' => 'failed'],
117-
)
118-
->create();
103+
factory(StackkitCloudTask::class)->create(['status' => 'pending']);
104+
factory(StackkitCloudTask::class)->create(['status' => 'failed']);
119105

120106
// Act
121107
$response = $this->getJson('/cloud-tasks-api/tasks?filter=failed');
@@ -130,15 +116,10 @@ public function it_can_filter_only_failed_tasks()
130116
public function it_can_filter_tasks_created_at_exact_time()
131117
{
132118
// Arrange
133-
StackkitCloudTaskFactory::new()
134-
->count(4)
135-
->sequence(
136-
['created_at' => now()->setTime(15,4, 59)],
137-
['created_at' => now()->setTime(16, 5, 0)],
138-
['created_at' => now()->setTime(16, 5, 59)],
139-
['created_at' => now()->setTime(16, 6, 0)],
140-
)
141-
->create();
119+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(15,4, 59)]);
120+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(16,5, 0)]);
121+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(16,5, 59)]);
122+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(16,6, 0)]);
142123

143124
// Act
144125
$response = $this->getJson('/cloud-tasks-api/tasks?time=16:05');
@@ -153,14 +134,9 @@ public function it_can_filter_tasks_created_at_exact_time()
153134
public function it_can_filter_tasks_created_at_exact_hour()
154135
{
155136
// Arrange
156-
StackkitCloudTaskFactory::new()
157-
->count(4)
158-
->sequence(
159-
['created_at' => now()->setTime(15,59, 59)],
160-
['created_at' => now()->setTime(16, 5, 59)],
161-
['created_at' => now()->setTime(16, 32, 32)],
162-
)
163-
->create();
137+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(15,59, 59)]);
138+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(16,5, 59)]);
139+
factory(StackkitCloudTask::class)->create(['created_at' => now()->setTime(16,32, 32)]);
164140

165141
// Act
166142
$response = $this->getJson('/cloud-tasks-api/tasks?hour=16');
@@ -175,14 +151,9 @@ public function it_can_filter_tasks_created_at_exact_hour()
175151
public function it_can_filter_tasks_by_queue()
176152
{
177153
// Arrange
178-
StackkitCloudTaskFactory::new()
179-
->count(3)
180-
->sequence(
181-
['queue' => 'barbequeue'],
182-
['queue' => 'barbequeue-priority'],
183-
['queue' => 'barbequeue-priority'],
184-
)
185-
->create();
154+
factory(StackkitCloudTask::class)->create(['queue' => 'barbequeue']);
155+
factory(StackkitCloudTask::class)->create(['queue' => 'barbequeue-priority']);
156+
factory(StackkitCloudTask::class)->create(['queue' => 'barbequeue-priority']);
186157

187158
// Act
188159
$response = $this->getJson('/cloud-tasks-api/tasks?queue=barbequeue-priority');
@@ -197,15 +168,10 @@ public function it_can_filter_tasks_by_queue()
197168
public function it_can_filter_tasks_by_status()
198169
{
199170
// Arrange
200-
StackkitCloudTaskFactory::new()
201-
->count(4)
202-
->sequence(
203-
['status' => 'queued'],
204-
['status' => 'pending'],
205-
['status' => 'failed'],
206-
['status' => 'failed'],
207-
)
208-
->create();
171+
factory(StackkitCloudTask::class)->create(['status' => 'queued']);
172+
factory(StackkitCloudTask::class)->create(['status' => 'pending']);
173+
factory(StackkitCloudTask::class)->create(['status' => 'failed']);
174+
factory(StackkitCloudTask::class)->create(['status' => 'failed']);
209175

210176
// Act
211177
$response = $this->getJson('/cloud-tasks-api/tasks?status=failed');
@@ -220,9 +186,7 @@ public function it_can_filter_tasks_by_status()
220186
public function it_shows_max_100_tasks()
221187
{
222188
// Arrange
223-
StackkitCloudTaskFactory::new()
224-
->count(101)
225-
->create();
189+
factory(StackkitCloudTask::class)->times(101)->create();
226190

227191
// Act
228192
$response = $this->getJson('/cloud-tasks-api/tasks');
@@ -237,7 +201,7 @@ public function it_shows_max_100_tasks()
237201
public function it_returns_the_correct_task_fields()
238202
{
239203
// Arrange
240-
$task = StackkitCloudTaskFactory::new()->create();
204+
$task = factory(StackkitCloudTask::class)->create();
241205

242206
// Act
243207
$response = $this->getJson('/cloud-tasks-api/tasks');
@@ -258,7 +222,7 @@ public function it_returns_the_correct_task_fields()
258222
public function it_returns_info_about_a_specific_task()
259223
{
260224
// Arrange
261-
$task = StackkitCloudTaskFactory::new()->create();
225+
$task = factory(StackkitCloudTask::class)->create();
262226

263227
// Act
264228
$response = $this->getJson('/cloud-tasks-api/task/' . $task->task_uuid);
@@ -287,7 +251,7 @@ public function when_a_job_is_dispatched_it_will_be_added_to_the_monitor()
287251
$task = StackkitCloudTask::first();
288252
$this->assertSame(0, $tasksBefore);
289253
$this->assertSame(1, $tasksAfter);
290-
$this->assertDatabaseHas(StackkitCloudTask::class, [
254+
$this->assertDatabaseHas((new StackkitCloudTask())->getTable(), [
291255
'queue' => 'barbequeue',
292256
'status' => 'queued',
293257
'name' => SimpleJob::class,

tests/TestCase.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ class TestCase extends \Orchestra\Testbench\TestCase
2525
*/
2626
public $client;
2727

28+
protected function setUp(): void
29+
{
30+
parent::setUp();
31+
32+
$this->withFactories(__DIR__ . '/../factories');
33+
}
34+
2835
/**
2936
* Get package providers. At a minimum this is the package being tested, but also
3037
* would include packages upon which our package depends, e.g. Cartalyst/Sentry

0 commit comments

Comments
 (0)