| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace Tests\Unit\Jobs;
- use App\Jobs\BackfillPaidOrderStatusesJob;
- use App\Models\Order;
- use App\Models\ProductSKU;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Illuminate\Support\Facades\Bus;
- use Illuminate\Support\Facades\Queue;
- use Tests\TestCase;
- class BackfillPaidOrderStatusesJobTest extends TestCase
- {
- use RefreshDatabase;
- protected $seed = true;
- public function test_job_can_be_dispatched(): void
- {
- Bus::fake();
- BackfillPaidOrderStatusesJob::dispatch(2026);
- Bus::assertDispatched(BackfillPaidOrderStatusesJob::class);
- }
- public function test_job_is_queued_via_queue_fake(): void
- {
- Queue::fake();
- BackfillPaidOrderStatusesJob::dispatch();
- Queue::assertPushed(BackfillPaidOrderStatusesJob::class);
- }
- public function test_job_marks_only_eligible_orders_as_paid(): void
- {
- $eligibleOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- ProductSKU::factory()->forOrder($eligibleOrder)->create([
- 'year' => 2026,
- 'statement_number' => 'ST-1',
- 'upd_number' => 'UPD-1',
- ]);
- $incompleteOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- ProductSKU::factory()->forOrder($incompleteOrder)->create([
- 'year' => 2026,
- 'statement_number' => 'ST-2',
- 'upd_number' => null,
- ]);
- $emptyOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- (new BackfillPaidOrderStatusesJob(year: 2026, chunkSize: 1))->handle(app(\App\Services\OrderPaymentStatusService::class));
- $this->assertSame(Order::STATUS_PAID, $eligibleOrder->refresh()->order_status_id);
- $this->assertSame(Order::STATUS_HANDED_OVER, $incompleteOrder->refresh()->order_status_id);
- $this->assertSame(Order::STATUS_HANDED_OVER, $emptyOrder->refresh()->order_status_id);
- }
- public function test_job_respects_year_filter(): void
- {
- $currentYearOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- ProductSKU::factory()->forOrder($currentYearOrder)->create([
- 'year' => 2026,
- 'statement_number' => 'ST-1',
- 'upd_number' => 'UPD-1',
- ]);
- $otherYearOrder = Order::factory()->create([
- 'year' => 2025,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- ProductSKU::factory()->forOrder($otherYearOrder)->create([
- 'year' => 2025,
- 'statement_number' => 'ST-2',
- 'upd_number' => 'UPD-2',
- ]);
- (new BackfillPaidOrderStatusesJob(year: 2026))->handle(app(\App\Services\OrderPaymentStatusService::class));
- $this->assertSame(Order::STATUS_PAID, $currentYearOrder->refresh()->order_status_id);
- $this->assertSame(Order::STATUS_HANDED_OVER, $otherYearOrder->refresh()->order_status_id);
- }
- }
|