Browse Source

Merge branch 'fix_is_empty_file_validator' of github.com:ZhandosKz/yii2 into ZhandosKz-fix_is_empty_file_validator

Conflicts:
	framework/CHANGELOG.md
tags/2.0.0-beta
Alexander Makarov 11 years ago
parent
commit
c694d32e13
  1. 1
      framework/CHANGELOG.md
  2. 4
      framework/validators/FileValidator.php
  3. 2
      tests/unit/data/validators/models/FakedValidationModel.php
  4. 62
      tests/unit/framework/validators/FileValidatorTest.php

1
framework/CHANGELOG.md

@ -54,6 +54,7 @@ Yii Framework 2 Change Log
- Bug #2624: Html::textArea() should respect "name" option. (qiangxue)
- Bug #2653: Fixed the bug that unsetting an unpopulated AR relation would trigger exception (qiangxue)
- Bug #2681: Fixed the bug of php build-in server https://bugs.php.net/bug.php?id=66606 (dizews)
- Bug #2695: Fixed the issue that `FileValidator::isEmpty()` always returns true for validate multiple files (ZhandosKz)
- Bug: Fixed `Call to a member function registerAssetFiles() on a non-object` in case of wrong `sourcePath` for an asset bundle (samdark)
- Bug: Fixed incorrect event name for `yii\jui\Spinner` (samdark)
- Bug: Json::encode() did not handle objects that implement JsonSerializable interface correctly (cebe)

4
framework/validators/FileValidator.php

@ -229,7 +229,9 @@ class FileValidator extends Validator
*/
public function isEmpty($value, $trim = false)
{
return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE;
$value = is_array($value) && !empty($value) ? $value[0] : $value;
return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE;
}
/**

2
tests/unit/data/validators/models/FakedValidationModel.php

@ -30,6 +30,8 @@ class FakedValidationModel extends Model
return [
[['val_attr_a', 'val_attr_b'], 'required', 'on' => 'reqTest'],
['val_attr_c', 'integer'],
['attr_images', 'file', 'maxFiles' => 3, 'types' => ['png'], 'on' => 'validateMultipleFiles'],
['attr_image', 'file', 'types' => ['png'], 'on' => 'validateFile']
];
}

62
tests/unit/framework/validators/FileValidatorTest.php

@ -107,6 +107,68 @@ class FileValidatorTest extends TestCase
$val->validateAttribute($m, 'attr_files');
$this->assertTrue($m->hasErrors());
$this->assertTrue(stripos(current($m->getErrors('attr_files')), 'you can upload at most') !== false);
$m = FakedValidationModel::createWithAttributes(
[
'attr_images' => $this->createTestFiles(
[
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'text.txt',
'size' => 1024
],
]
)
]
);
$m->setScenario('validateMultipleFiles');
$this->assertFalse($m->validate());
$this->assertTrue(stripos(current($m->getErrors('attr_images')), 'Only files with these extensions are allowed') !== false);
$m = FakedValidationModel::createWithAttributes(
[
'attr_images' => $this->createTestFiles(
[
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
]
)
]
);
$m->setScenario('validateMultipleFiles');
$this->assertTrue($m->validate());
$m = FakedValidationModel::createWithAttributes(
[
'attr_image' => $this->createTestFiles(
[
[
'name' => 'text.txt',
'size' => 1024,
],
]
)
]
);
$m->setScenario('validateFile');
$this->assertFalse($m->validate());
}
/**

Loading…
Cancel
Save