rules()); $this->assertFalse($validator->fails()); } public function test_short_object_address_fails_min_length(): void { $data = [ 'object_address' => 'ab', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('object_address', $validator->errors()->toArray()); } public function test_object_address_with_min_length_passes(): void { $data = [ 'object_address' => 'ул. Ленина, 1', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $errors = $validator->errors()->toArray(); $this->assertArrayNotHasKey('object_address', $errors); } public function test_invalid_installation_date_fails(): void { $data = [ 'installation_date' => 'not-a-date', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('installation_date', $validator->errors()->toArray()); } public function test_invalid_ready_date_fails(): void { $data = [ 'ready_date' => 'not-a-date', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('ready_date', $validator->errors()->toArray()); } public function test_valid_dates_pass(): void { $data = [ 'installation_date' => '2026-06-01', 'ready_date' => '2026-07-15', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $errors = $validator->errors()->toArray(); $this->assertArrayNotHasKey('installation_date', $errors); $this->assertArrayNotHasKey('ready_date', $errors); } public function test_products_as_array_passes(): void { $data = [ 'products' => [1, 2, 3], ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $errors = $validator->errors()->toArray(); $this->assertArrayNotHasKey('products', $errors); } public function test_products_as_non_array_fails(): void { $data = [ 'products' => 'not-an-array', ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('products', $validator->errors()->toArray()); } public function test_install_days_below_min_fails(): void { $data = [ 'install_days' => 0, ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('install_days', $validator->errors()->toArray()); } public function test_install_days_at_min_passes(): void { $data = [ 'install_days' => 1, ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $errors = $validator->errors()->toArray(); $this->assertArrayNotHasKey('install_days', $errors); } public function test_nullable_string_fields_accept_null(): void { $data = [ 'name' => null, 'comment' => null, 'tg_group_name' => null, 'tg_group_link' => null, ]; $request = new StoreOrderRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } }