Skip to content

Commit

Permalink
Merge pull request #49 from s-nakajima/master
Browse files Browse the repository at this point in the history
Unitテスト追加
  • Loading branch information
s-nakajima committed Jan 28, 2017
2 parents 3a28ab6 + d4cd5ee commit a434fb2
Show file tree
Hide file tree
Showing 13 changed files with 1,793 additions and 459 deletions.
6 changes: 3 additions & 3 deletions Model/Behavior/M17nBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ private function __hasFields(Model $model, $fields) {
* @param Model $model 呼び出し元Model
* @return bool
*/
public function isM7nGeneralPlugin(Model $model) {
public function isM17nGeneralPlugin(Model $model) {
if (! $model->hasField('language_id')) {
return false;
}
Expand Down Expand Up @@ -185,7 +185,7 @@ public function beforeSave(Model $model, $options = array()) {
return true;
}

if (! $this->isM7nGeneralPlugin($model)) {
if (! $this->isM17nGeneralPlugin($model)) {
return true;
}

Expand Down Expand Up @@ -279,7 +279,7 @@ public function afterSave(Model $model, $created, $options = array()) {
return parent::afterSave($model, $created, $options);
}

if (! $this->isM7nGeneralPlugin($model)) {
if (! $this->isM17nGeneralPlugin($model)) {
return true;
}

Expand Down
252 changes: 163 additions & 89 deletions Test/Case/Model/Behavior/M17nBehavior/SaveBlockIdTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@
/**
* M17nBehavior::save()のテスト
*
* BlockIdに関するテスト(keyFieldが指定されている)
*
* ### actAsの定義
* ````
* public $actsAs = array(
* 'M17n.M17n' => array(
* 'keyField' => 'block_id'
* )
* );
* ````
*
* @author Shohei Nakajima <nakajimashouhei@gmail.com>
* @package NetCommons\M17n\Test\Case\Model\Behavior\M17nBehavior
*/
Expand Down Expand Up @@ -59,111 +70,174 @@ public function setUp() {
/**
* テストデータ
*
* ### テストパタン
* - 0.コンテンツ新規登録
* - 1.「日本語のみ」のデータを日本語で編集
* - 2.「日本語のみ」のデータを英語で編集
* - 3.「日本語、英語」のデータを日本語で編集
*
* ### 戻り値
* - data 登録データ
* - langId 言語ID
* - data 登録データ
* - expected 期待値
* - prepare 関連するデータ作成
*
* @return array テストデータ
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function dataProvider() {
//データ生成
$results = array();

// * 0.コンテンツ新規登録
$index = 0;
$results[$index]['langId'] = '2';
$results[$index]['data'] = array(
'TestM17nBSaveBlockId' => array(
'language_id' => $results[$index]['langId'],
'block_id' => '99',
'content' => 'Test add 1',
),
);
$results[$index]['expected'][0] = Hash::merge($results[$index]['data'], array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => false,
'id' => '5',
),
));
$testNo = 0;
$results[$testNo]['langId'] = '2';
$results[$testNo]['data'] = $this->__getData($testNo, $results[$testNo]['langId']);
$results[$testNo]['expected'] = $this->__getExpected($testNo, $results[$testNo]['langId']);
$results[$testNo]['prepare'] = array();

// * 1.「日本語のみ」のデータを日本語で編集
$index = 1;
$results[$index]['langId'] = '2';
$results[$index]['data'] = array(
'TestM17nBSaveBlockId' => array(
'id' => '1',
'language_id' => $results[$index]['langId'],
'block_id' => '1',
'content' => 'Test edit 1',
),
);
$results[$index]['expected'][0] = Hash::merge($results[$index]['data'], array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => false,
'created' => (new TestM17nBSaveBlockIdFixture())->records[0]['created'],
'created_user' => (new TestM17nBSaveBlockIdFixture())->records[0]['created_user'],
),
));
$testNo = 1;
$results[$testNo]['langId'] = '2';
$results[$testNo]['data'] = $this->__getData($testNo, $results[$testNo]['langId']);
$results[$testNo]['expected'] = $this->__getExpected($testNo, $results[$testNo]['langId']);
$results[$testNo]['prepare'] = array();

// * 2.「日本語のみ」のデータを英語で編集
$index = 2;
$results[$index]['langId'] = '1';
$results[$index]['data'] = array(
'TestM17nBSaveBlockId' => array(
'id' => '1',
'language_id' => $results[$index]['langId'],
'block_id' => '1',
'content' => 'Test edit 1',
),
);
$results[$index]['expected'][0] = Hash::merge(
array(
'TestM17nBSaveBlockId' => (new TestM17nBSaveBlockIdFixture())->records[0]
),
array(
$testNo = 2;
$results[$testNo]['langId'] = '1';
$results[$testNo]['data'] = $this->__getData($testNo, $results[$testNo]['langId']);
$results[$testNo]['expected'] = $this->__getExpected($testNo, $results[$testNo]['langId']);
$results[$testNo]['prepare'] = array();

// * 3.「日本語、英語」のデータを日本語で編集
$testNo = 3;
$results[$testNo]['langId'] = '2';
$results[$testNo]['data'] = $this->__getData($testNo, $results[$testNo]['langId']);
$results[$testNo]['expected'] = $this->__getExpected($testNo, $results[$testNo]['langId']);
$results[$testNo]['prepare'] = array();

return $results;
}

/**
* テストデータ($data)を取得する
*
* @param int $testNo テストNo
* @param int $langId 言語ID
* @return array
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
private function __getData($testNo, $langId) {
$data = array();

if ($testNo === 0) {
$data = array(
'TestM17nBSaveBlockId' => array(
'is_translation' => true,
'language_id' => $langId,
'block_id' => '99',
'content' => 'Test add 1',
),
)
);
$results[$index]['expected'][1] = Hash::merge($results[$index]['data'], array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => false,
'is_translation' => true,
'id' => '5',
),
));

// * 4.「日本語、英語」のデータを日本語で編集
$index = 4;
$results[$index]['langId'] = '2';
$results[$index]['data'] = array(
'TestM17nBSaveBlockId' => array(
'id' => '3',
'language_id' => $results[$index]['langId'],
'block_id' => '3',
'content' => 'Test edit 1',
),
);
$results[$index]['expected'][0] = Hash::merge($results[$index]['data'], array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => true,
'created' => (new TestM17nBSaveBlockIdFixture())->records[2]['created'],
'created_user' => (new TestM17nBSaveBlockIdFixture())->records[2]['created_user'],
),
));
$results[$index]['expected'][1] = array(
'TestM17nBSaveBlockId' => (new TestM17nBSaveBlockIdFixture())->records[3]
);
);
} elseif (in_array($testNo, [1, 2], true)) {
$data = array(
'TestM17nBSaveBlockId' => array(
'id' => '1',
'language_id' => $langId,
'block_id' => '1',
'content' => 'Test edit 1',
),
);
} elseif ($testNo === 3) {
$data = array(
'TestM17nBSaveBlockId' => array(
'id' => '3',
'language_id' => $langId,
'block_id' => '3',
'content' => 'Test edit 1',
),
);
}

return $results;
return $data;
}

/**
* テストデータの期待値($expected)を取得する
*
* @param int $testNo テストNo
* @param int $langId 言語ID
* @return array
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
private function __getExpected($testNo, $langId) {
$expected = array();

if ($testNo === 0) {
$expected[0] = Hash::merge(
$this->__getData($testNo, $langId),
array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => false,
'id' => '5',
),
)
);
} elseif ($testNo === 1) {
$expected[0] = Hash::merge(
$this->__getData($testNo, $langId),
array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => false,
'created' => (new TestM17nBSaveBlockIdFixture())->records[0]['created'],
'created_user' => (new TestM17nBSaveBlockIdFixture())->records[0]['created_user'],
),
)
);
} elseif ($testNo === 2) {
$expected[0] = Hash::merge(
array(
'TestM17nBSaveBlockId' => (new TestM17nBSaveBlockIdFixture())->records[0]
),
array(
'TestM17nBSaveBlockId' => array(
'is_translation' => true,
),
)
);
$expected[1] = Hash::merge(
$this->__getData($testNo, $langId),
array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => false,
'is_translation' => true,
'id' => '5',
),
)
);
} elseif ($testNo === 3) {
$expected[0] = Hash::merge(
$this->__getData($testNo, $langId),
array(
'TestM17nBSaveBlockId' => array(
'is_original_copy' => false,
'is_origin' => true,
'is_translation' => true,
'created' => (new TestM17nBSaveBlockIdFixture())->records[2]['created'],
'created_user' => (new TestM17nBSaveBlockIdFixture())->records[2]['created_user'],
),
)
);
$expected[1] = array(
'TestM17nBSaveBlockId' => (new TestM17nBSaveBlockIdFixture())->records[3]
);
}

return $expected;
}

}
Loading

0 comments on commit a434fb2

Please sign in to comment.