create('document.pdf', 100, 'application/pdf'); $validator = Validator::make( ['image' => $file], ['image' => PublicImageUploadRules::validationRules()], ); $this->assertTrue($validator->fails()); } public function test_rejects_oversized_image(): void { $file = UploadedFile::fake()->create( 'large.jpg', PublicImageUploadRules::MAX_SIZE_KILOBYTES + 1, 'image/jpeg', ); $validator = Validator::make( ['image' => $file], ['image' => PublicImageUploadRules::validationRules()], ); $this->assertTrue($validator->fails()); } public function test_rejects_image_with_disallowed_extension(): void { $file = UploadedFile::fake()->create('photo.gif', 512, 'image/jpeg'); $validator = Validator::make( ['image' => $file], ['image' => PublicImageUploadRules::validationRules()], ); $this->assertTrue($validator->fails()); } public function test_uses_portuguese_validation_message_for_invalid_extension(): void { $file = UploadedFile::fake()->create('photo.gif', 512, 'image/jpeg'); $component = PublicImageUploadRules::fileUpload('image', 'Imagem'); $validator = Validator::make( ['image' => $file], ['image' => PublicImageUploadRules::validationRules()], $component->getValidationMessages(), ); $this->assertSame( 'A imagem deve ser um arquivo JPG, JPEG, PNG ou WEBP.', $validator->errors()->first('image'), ); } public function test_accepts_valid_image_within_limits(): void { $file = UploadedFile::fake()->create('photo.jpg', 512, 'image/jpeg'); $validator = Validator::make( ['image' => $file], ['image' => PublicImageUploadRules::validationRules()], ); $this->assertFalse($validator->fails()); } }