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); } }