| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- namespace Tests\Unit\Requests;
- use App\Http\Requests\StoreMafOrderRequest;
- use Illuminate\Support\Facades\Validator;
- use Tests\TestCase;
- class StoreMafOrderRequestTest extends TestCase
- {
- public function test_empty_data_fails_because_product_id_and_quantity_are_required(): void
- {
- $request = new StoreMafOrderRequest();
- $validator = Validator::make([], $request->rules());
- $this->assertTrue($validator->fails());
- }
- public function test_missing_product_id_fails(): void
- {
- $data = [
- 'quantity' => 2,
- ];
- $request = new StoreMafOrderRequest();
- $validator = Validator::make($data, $request->rules());
- $this->assertTrue($validator->fails());
- $this->assertArrayHasKey('product_id', $validator->errors()->toArray());
- }
- public function test_missing_quantity_fails(): void
- {
- $data = [
- 'product_id' => 1,
- ];
- $rules = (new StoreMafOrderRequest())->rules();
- // Remove exists rule to isolate required check without DB
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $this->assertTrue($validator->fails());
- $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
- }
- public function test_quantity_below_min_fails(): void
- {
- $data = [
- 'product_id' => 1,
- 'quantity' => 0,
- ];
- $rules = (new StoreMafOrderRequest())->rules();
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $this->assertTrue($validator->fails());
- $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
- }
- public function test_quantity_must_be_integer(): void
- {
- $data = [
- 'product_id' => 1,
- 'quantity' => 'abc',
- ];
- $rules = (new StoreMafOrderRequest())->rules();
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $this->assertTrue($validator->fails());
- $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
- }
- public function test_in_stock_below_zero_fails(): void
- {
- $data = [
- 'product_id' => 1,
- 'quantity' => 2,
- 'in_stock' => -1,
- ];
- $rules = (new StoreMafOrderRequest())->rules();
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $this->assertTrue($validator->fails());
- $this->assertArrayHasKey('in_stock', $validator->errors()->toArray());
- }
- public function test_valid_data_passes_required_and_type_rules(): void
- {
- $data = [
- 'product_id' => 1,
- 'quantity' => 3,
- 'in_stock' => 0,
- 'order_number' => 'ORD-2026-001',
- ];
- // Strip exists rules to test all other constraints without DB
- $rules = (new StoreMafOrderRequest())->rules();
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $this->assertFalse($validator->fails());
- }
- public function test_optional_order_number_accepts_null(): void
- {
- $data = [
- 'product_id' => 1,
- 'quantity' => 1,
- 'order_number' => null,
- ];
- $rules = (new StoreMafOrderRequest())->rules();
- $rules['product_id'] = 'required';
- $validator = Validator::make($data, $rules);
- $errors = $validator->errors()->toArray();
- $this->assertArrayNotHasKey('order_number', $errors);
- }
- }
|