rules(); $rules['user_id'] = 'required'; $rules['status_id'] = 'required'; $rules['brigadier_id'] = 'nullable'; return $rules; } public function test_empty_data_fails(): void { $validator = Validator::make([], $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); } public function test_missing_user_id_fails(): void { $data = [ 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-02-01', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('user_id', $validator->errors()->toArray()); } public function test_missing_status_id_fails(): void { $data = [ 'user_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-02-01', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('status_id', $validator->errors()->toArray()); } public function test_missing_create_date_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'finish_date' => '2026-02-01', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('create_date', $validator->errors()->toArray()); } public function test_missing_finish_date_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('finish_date', $validator->errors()->toArray()); } public function test_invalid_create_date_format_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => 'not-a-date', 'finish_date' => '2026-02-01', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('create_date', $validator->errors()->toArray()); } public function test_invalid_finish_date_format_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => 'bad-date', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('finish_date', $validator->errors()->toArray()); } public function test_valid_required_fields_pass_non_exists_rules(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-06-30', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertFalse($validator->fails()); } public function test_nullable_fields_accept_null_values(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-06-30', 'reason' => null, 'guarantee' => null, 'whats_done' => null, 'comment' => null, 'work_days' => null, ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertFalse($validator->fails()); } public function test_factory_reclamation_number_max_length_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-06-30', 'factory_reclamation_number' => str_repeat('a', 256), ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('factory_reclamation_number', $validator->errors()->toArray()); } public function test_invalid_start_work_date_fails(): void { $data = [ 'user_id' => 1, 'status_id' => 1, 'create_date' => '2026-01-01', 'finish_date' => '2026-06-30', 'start_work_date' => 'invalid', ]; $validator = Validator::make($data, $this->rulesWithoutExists()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('start_work_date', $validator->errors()->toArray()); } }