Skip to content

Commit

Permalink
fix #3110【5.1】フィールド編集にてテキスト関連設定に数字以外の文字を入力しても保存できてしまう【カスタムコンテンツ>フィールド…
Browse files Browse the repository at this point in the history
…編集】 (#3139)

Co-authored-by: Đỗ Văn Hùng <[email protected]>
  • Loading branch information
HungDV2022 and dovanhung authored Feb 21, 2024
1 parent 2c3f828 commit 38a227f
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ public function validationDefault(Validator $validator): Validator
$validator
->scalar('type')
->notEmptyString('type', __d('baser_core', 'タイプを入力してください。'));

$validator
->allowEmptyString('size')
->integer('size', __d('baser_core', '横幅サイズは整数を入力してください。'));
$validator
->allowEmptyString('max_length')
->integer('max_length', __d('baser_core', '最大文字数は整数を入力してください。'));

$validator
->add('source', [
'checkSelectList' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@
namespace BcCustomContent\Test\TestCase\Model\Table;

use BaserCore\TestSuite\BcTestCase;
use BcCustomContent\Model\Table\CustomFieldsTable;
use BcCustomContent\Test\Factory\CustomFieldFactory;

/**
* CustomFieldsTableTest
* @property CustomFieldsTable $customFieldsTable
*/
class CustomFieldsTableTest extends BcTestCase
{
Expand All @@ -25,13 +28,15 @@ class CustomFieldsTableTest extends BcTestCase
public function setUp(): void
{
parent::setUp();
$this->customFieldsTable = $this->getTableLocator()->get('BcCustomContent.CustomFields');
}

/**
* Tear down
*/
public function tearDown(): void
{
unset($this->customFieldsTable);
parent::tearDown();
}

Expand All @@ -48,7 +53,62 @@ public function test_initialize()
*/
public function test_validationDefault()
{
$this->markTestIncomplete('このテストは、まだ実装されていません。');
$validator = $this->customFieldsTable->getValidator('default');
//バリディションを発生しない テスト
$errors = $validator->validate([
'name' => 'a',
'title' => 'a',
'type' => 'group',
'size' => '',
'max_length' => '',
'source' => '',
]);
$this->assertCount(0, $errors);

//notEmptyString テスト
$errors = $validator->validate([
'name' => '',
'title' => '',
'type' => '',
'size' => '',
'max_length' => '',
'source' => '',
]);
$this->assertEquals('フィールド名を入力してください。', current($errors['name']));
$this->assertEquals('項目見出しを入力してください。', current($errors['title']));
$this->assertEquals('タイプを入力してください。', current($errors['type']));

//maxLength テスト
$errors = $validator->validate([
'name' => str_repeat('a', 256),
'title' => str_repeat('a', 256)
]);
$this->assertEquals('フィールド名は255文字以内で入力してください。', current($errors['name']));
$this->assertEquals('項目見出しは255文字以内で入力してください。', current($errors['title']));

//フィールド名は半角英数字とアンダースコア & 横幅サイズと最大文字数は整数ではない テスト
$errors = $validator->validate([
'name' => '',
'size' => 'a',
'max_length' => 'b',
]);
$this->assertEquals('フィールド名は半角英数字とアンダースコアのみで入力してください。', current($errors['name']));
$this->assertEquals('横幅サイズは整数を入力してください。', current($errors['size']));
$this->assertEquals('最大文字数は整数を入力してください。', current($errors['max_length']));

//validateUnique テスト
CustomFieldFactory::make(['name' => 'test'])->persist();
$errors = $validator->validate([
'name' => 'test',
]);
$this->assertEquals('既に登録のあるフィールド名です。', current($errors['name']));

//validate checkSelectList テスト
CustomFieldFactory::make(['name' => 'test'])->persist();
$errors = $validator->validate([
'source' => "\r\r\n\n\ntest",
]);
$this->assertEquals('選択リストに同じ項目を複数登録できません。', current($errors['source']));
}

/**
Expand Down

0 comments on commit 38a227f

Please sign in to comment.