| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace Tests\Unit\Services;
- use App\Models\Order;
- use App\Models\ProductSKU;
- use App\Services\OrderPaymentStatusService;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Tests\TestCase;
- class OrderPaymentStatusServiceTest extends TestCase
- {
- use RefreshDatabase;
- protected $seed = true;
- public function test_marks_order_paid_when_all_mafs_have_payment_data(): void
- {
- $order = Order::factory()->create(['order_status_id' => Order::STATUS_HANDED_OVER]);
- ProductSKU::factory()->forOrder($order)->create([
- 'statement_number' => ' ST-1 ',
- 'upd_number' => ' UPD-1 ',
- ]);
- ProductSKU::factory()->forOrder($order)->create([
- 'statement_number' => 'ST-2',
- 'upd_number' => 'UPD-2',
- ]);
- $result = app(OrderPaymentStatusService::class)->markPaidIfAllMafsHavePaymentData($order);
- $this->assertTrue($result);
- $this->assertSame(Order::STATUS_PAID, $order->refresh()->order_status_id);
- }
- public function test_does_not_mark_paid_when_any_payment_field_is_blank(): void
- {
- $order = Order::factory()->create(['order_status_id' => Order::STATUS_HANDED_OVER]);
- ProductSKU::factory()->forOrder($order)->create([
- 'statement_number' => 'ST-1',
- 'upd_number' => 'UPD-1',
- ]);
- ProductSKU::factory()->forOrder($order)->create([
- 'statement_number' => ' ',
- 'upd_number' => 'UPD-2',
- ]);
- $result = app(OrderPaymentStatusService::class)->markPaidIfAllMafsHavePaymentData($order);
- $this->assertFalse($result);
- $this->assertSame(Order::STATUS_HANDED_OVER, $order->refresh()->order_status_id);
- }
- public function test_does_not_mark_paid_without_mafs(): void
- {
- $order = Order::factory()->create(['order_status_id' => Order::STATUS_HANDED_OVER]);
- $result = app(OrderPaymentStatusService::class)->markPaidIfAllMafsHavePaymentData($order);
- $this->assertFalse($result);
- $this->assertSame(Order::STATUS_HANDED_OVER, $order->refresh()->order_status_id);
- }
- public function test_backfill_candidates_query_returns_only_eligible_orders(): 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',
- ]);
- $paidOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_PAID,
- ]);
- ProductSKU::factory()->forOrder($paidOrder)->create([
- 'year' => 2026,
- 'statement_number' => 'ST-2',
- 'upd_number' => 'UPD-2',
- ]);
- $incompleteOrder = Order::factory()->create([
- 'year' => 2026,
- 'order_status_id' => Order::STATUS_HANDED_OVER,
- ]);
- ProductSKU::factory()->forOrder($incompleteOrder)->create([
- 'year' => 2026,
- 'statement_number' => 'ST-3',
- 'upd_number' => null,
- ]);
- $candidateIds = app(OrderPaymentStatusService::class)
- ->paidBackfillCandidatesQuery(2026)
- ->pluck('id')
- ->all();
- $this->assertSame([$eligibleOrder->id], $candidateIds);
- }
- }
|