'expired-key', 'items' => [], 'calculation_input' => [], 'calculation_result' => [], 'expires_at' => Carbon::now()->subMinutes(10), ]); $alive = TempOrder::create([ 'cart_key' => 'alive-key', 'items' => [], 'calculation_input' => [], 'calculation_result' => [], 'expires_at' => Carbon::now()->addMinutes(10), ]); $this->artisan('sirsoft-ecommerce:prune-temp-orders')->assertSuccessful(); $this->assertDatabaseMissing('ecommerce_temp_orders', ['id' => $expired->id]); $this->assertDatabaseHas('ecommerce_temp_orders', ['id' => $alive->id]); } /** * 모듈이 이 커맨드를 스케줄로 등록한다 (등록 누락 회귀 차단). */ public function test_command_is_registered_in_module_schedules(): void { $entry = collect((new Module)->getSchedules()) ->firstWhere('command', 'sirsoft-ecommerce:prune-temp-orders'); $this->assertNotNull($entry, '만료 임시 주문 정리 스케줄이 등록되어야 합니다.'); $this->assertSame('hourly', $entry['schedule']); } }