Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix #3255 【メールフィールド:5.1】詳細設定にある「グループ名」と「グループ入力チェック」のヘルプ内容とエラー文言が異なる #3364

Merged
merged 1 commit into from
Apr 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions plugins/bc-mail/src/Model/Table/MailFieldsTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public function initialize(array $config): void
* @return Validator
* @checked
* @noTodo
* @unitTest
*/
public function validationDefault(Validator $validator): Validator
{
Expand Down Expand Up @@ -108,21 +109,21 @@ public function validationDefault(Validator $validator): Validator
->maxLength('options', 255, __d('baser_core', 'オプションは255文字以内で入力してください。'));
$validator
->scalar('class')
->maxLength('class', 255, __d('baser_core', 'クラス名255文字以内で入力してください。'));
->maxLength('class', 255, __d('baser_core', 'クラス名は255文字以内で入力してください。'));
$validator
->scalar('default_value')
->maxLength('default_value', 255, __d('baser_core', '初期値は255文字以内で入力してください。'));
$validator
->scalar('description')
->maxLength('options', 255, __d('baser_core', '説明文は255文字以内で入力してください。'));
->maxLength('description', 255, __d('baser_core', '説明文は255文字以内で入力してください。'));
$validator
->scalar('group_field')
->maxLength('group_field', 255, __d('baser_core', 'グループ名は255文字以内で入力してください。'))
->add('group_field', [
'halfTextMailField' => [
'rule' => 'halfTextMailField',
'provider' => 'table',
'message' => __d('baser_core', 'グループ名は小文字の半角英数字、アンダースコアのみで入力してください。')
'message' => __d('baser_core', 'グループ名は半角英数字、ハイフン、アンダースコアで入力してください。')
]]);
$validator
->scalar('group_valid')
Expand All @@ -131,7 +132,7 @@ public function validationDefault(Validator $validator): Validator
'halfTextMailField' => [
'rule' => 'halfTextMailField',
'provider' => 'table',
'message' => __d('baser_core', 'グループ入力チェックは小文字の半角英数字、アンダースコアのみで入力してください。')
'message' => __d('baser_core', 'グループ入力チェックは半角英数字、ハイフン、アンダースコアで入力してください。')
]]);
$validator
->scalar('size')
Expand Down
168 changes: 72 additions & 96 deletions plugins/bc-mail/tests/TestCase/Model/Table/MailFieldsTableTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use BaserCore\TestSuite\BcTestCase;
use BcMail\Model\Table\MailFieldsTable;
use BcMail\Test\Factory\MailFieldsFactory;

/**
* @property MailFieldsTable $MailFieldsTable
Expand Down Expand Up @@ -56,125 +57,100 @@ public function test_initialize()
/**
* validate
*/
public function test正常チェック()
public function test_validationDefaultNotError()
{
$this->markTestIncomplete('こちらのテストはまだ未確認です');
$this->MailField->create([
'MailField' => [
'name' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'field_name' => '01234567890123456789012345678901234567890123456789',
'mail_content_id' => 999,
'type' => 'type',
'head' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'attention' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'before_attachment' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'after_attachment' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'options' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'class' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'default_value' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'description' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'group_field' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
'group_valid' => '012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234',
]
$validator = $this->MailFieldsTable->getValidator('default');
$errors = $validator->validate([
'name' => str_repeat('a', 255),
'field_name' => str_repeat('a', 50),
'mail_content_id' => 999,
'type' => 'type',
'head' => str_repeat('a', 255),
'attention' => str_repeat('a', 255),
'before_attachment' => str_repeat('a', 255),
'after_attachment' => str_repeat('a', 255),
'options' => str_repeat('a', 255),
'class' => str_repeat('a', 255),
'default_value' => str_repeat('a', 255),
'description' => str_repeat('a', 255),
'group_field' => str_repeat('a', 255),
'group_valid' => str_repeat('a', 255)
]);

$this->assertTrue($this->MailField->validates());
$this->assertEmpty($this->MailField->validationErrors);
$this->assertCount(0, $errors);
}

public function test空白チェック()
public function test_validationDefaultEmpty()
{
$this->markTestIncomplete('こちらのテストはまだ未確認です');
$this->MailField->create([
'MailField' => [
'name' => '',
'type' => '',
]
$validator = $this->MailFieldsTable->getValidator('default');
$errors = $validator->validate([
'name' => '',
'type' => ''
]);
$this->assertEquals('項目名を入力してください。', current($errors['name']));
$this->assertEquals('タイプを入力してください。', current($errors['type']));

$this->assertFalse($this->MailField->validates());

$expected = [
'name' => ['項目名を入力してください。'],
'type' => ['タイプを入力してください。'],
];
$this->assertEquals($expected, $this->MailField->validationErrors);
}


public function test桁数チェック()
public function test_validationDefaultOverText()
{
$this->markTestIncomplete('こちらのテストはまだ未確認です');
$this->MailField->create([
'MailField' => [
'name' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'field_name' => '012345678901234567890123456789012345678901234567890',
'mail_content_id' => 999,
'type' => 'type',
'head' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'attention' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'before_attachment' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'after_attachment' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'options' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'class' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'default_value' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'description' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'group_field' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
'group_valid' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345',
]
$validator = $this->MailFieldsTable->getValidator('default');
$errors = $validator->validate([
'name' => str_repeat('a', 256),
'field_name' => str_repeat('a', 51),
'mail_content_id' => 999,
'type' => 'type',
'head' => str_repeat('a', 256),
'attention' => str_repeat('a', 256),
'before_attachment' => str_repeat('a', 256),
'after_attachment' => str_repeat('a', 256),
'options' => str_repeat('a', 256),
'class' => str_repeat('a', 256),
'default_value' => str_repeat('a', 256),
'description' => str_repeat('a', 256),
'group_field' => str_repeat('a', 256),
'group_valid' => str_repeat('a', 256)
]);
$this->assertFalse($this->MailField->validates());

$expected = [
'name' => ['項目名は255文字以内で入力してください。'],
'field_name' => ['フィールド名は50文字以内で入力してください。'],
'head' => ['項目見出しは255文字以内で入力してください。'],
'attention' => ['注意書きは255文字以内で入力してください。'],
'before_attachment' => ['前見出しは255文字以内で入力してください。'],
'after_attachment' => ['後見出しは255文字以内で入力してください。'],
'options' => ['オプションは255文字以内で入力してください。'],
'class' => ['クラス名は255文字以内で入力してください。'],
'default_value' => ['初期値は255文字以内で入力してください。'],
'description' => ['説明文は255文字以内で入力してください。'],
'group_field' => ['グループフィールドは255文字以内で入力してください。'],
'group_valid' => ['グループ入力チェックは255文字以内で入力してください。']
];

$this->assertEquals($expected, $this->MailField->validationErrors);
$this->assertEquals('項目名は255文字以内で入力してください。', current($errors['name']));
$this->assertEquals('フィールド名は50文字以内で入力してください。', current($errors['field_name']));
$this->assertEquals('項目見出しは255文字以内で入力してください。', current($errors['head']));
$this->assertEquals('注意書きは255文字以内で入力してください。', current($errors['attention']));
$this->assertEquals('前見出しは255文字以内で入力してください。', current($errors['before_attachment']));
$this->assertEquals('後見出しは255文字以内で入力してください。', current($errors['after_attachment']));
$this->assertEquals('オプションは255文字以内で入力してください。', current($errors['options']));
$this->assertEquals('クラス名は255文字以内で入力してください。', current($errors['class']));
$this->assertEquals('初期値は255文字以内で入力してください。', current($errors['default_value']));
$this->assertEquals('説明文は255文字以内で入力してください。', current($errors['description']));
$this->assertEquals('グループ名は255文字以内で入力してください。', current($errors['group_field']));
$this->assertEquals('グループ入力チェックは255文字以内で入力してください。', current($errors['group_valid']));
}


public function test半角英数チェック()
public function test_validationDefaultHankakuCheck()
{
$this->markTestIncomplete('こちらのテストはまだ未確認です');
$this->MailField->create([
'MailField' => [
'field_name' => '123abc',
]
$validator = $this->MailFieldsTable->getValidator('default');
$errors = $validator->validate([
'mail_content_id' => 999,
'field_name' => '123abc',
'group_field' => '123abc',
'group_valid' => '123abc'
]);
$this->assertFalse($this->MailField->validates());

$expected = [
'field_name' => ['フィールド名は半角英数字のみで入力してください。'],
];
$this->assertEquals($expected, $this->MailField->validationErrors);
$this->assertEquals('フィールド名は小文字の半角英数字、アンダースコアのみで入力してください。', current($errors['field_name']));
$this->assertEquals('グループ名は半角英数字、ハイフン、アンダースコアで入力してください。', current($errors['group_field']));
$this->assertEquals('グループ入力チェックは半角英数字、ハイフン、アンダースコアで入力してください。', current($errors['group_valid']));
}

public function test重複チェック()
public function test_validationDefaultDuplicate()
{
$this->markTestIncomplete('こちらのテストはまだ未確認です');
$this->MailField->create([
'MailField' => [
'field_name' => 'name_1',
'mail_content_id' => 1,
]
MailFieldsFactory::make(['mail_content_id' => 1, 'field_name' => 'field_1'])->persist();
$validator = $this->MailFieldsTable->getValidator('default');
$errors = $validator->validate([
'mail_content_id' => 1,
'field_name' => 'field_1'
]);
$this->assertFalse($this->MailField->validates());

$expected = [
'field_name' => ['入力されたフィールド名は既に登録されています。'],
];
$this->assertEquals($expected, $this->MailField->validationErrors);
$this->assertEquals('既に登録のあるフィールド名です。', current($errors['field_name']));
}

/**
Expand Down
Loading