rules()); $this->assertTrue($validator->fails()); } public function test_missing_contract_number_fails(): void { $data = [ 'contract_date' => '2026-01-15', 'year' => 2026, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('contract_number', $validator->errors()->toArray()); } public function test_missing_contract_date_fails(): void { $data = [ 'contract_number' => 'ДГ-2026/001', 'year' => 2026, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('contract_date', $validator->errors()->toArray()); } public function test_missing_year_fails(): void { $data = [ 'contract_number' => 'ДГ-2026/001', 'contract_date' => '2026-01-15', ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('year', $validator->errors()->toArray()); } public function test_invalid_contract_date_format_fails(): void { $data = [ 'contract_number' => 'ДГ-2026/001', 'contract_date' => 'not-a-date', 'year' => 2026, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('contract_date', $validator->errors()->toArray()); } public function test_year_below_min_fails(): void { $data = [ 'contract_number' => 'ДГ-1999/001', 'contract_date' => '1999-06-01', 'year' => 1999, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('year', $validator->errors()->toArray()); } public function test_year_at_min_boundary_passes(): void { $data = [ 'contract_number' => 'ДГ-2000/001', 'contract_date' => '2000-01-01', 'year' => 2000, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $errors = $validator->errors()->toArray(); $this->assertArrayNotHasKey('year', $errors); } public function test_year_must_be_numeric(): void { $data = [ 'contract_number' => 'ДГ-2026/001', 'contract_date' => '2026-01-15', 'year' => 'two-thousand', ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('year', $validator->errors()->toArray()); } public function test_valid_data_passes(): void { $data = [ 'contract_number' => 'ДГ-2026/042', 'contract_date' => '2026-02-20', 'year' => 2026, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } public function test_contract_number_must_be_string(): void { $data = [ 'contract_number' => ['not', 'a', 'string'], 'contract_date' => '2026-01-15', 'year' => 2026, ]; $request = new StoreContractRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('contract_number', $validator->errors()->toArray()); } }