* @link http://www.netcommons.org NetCommons Project * @license http://www.netcommons.org/license.txt NetCommons License * @copyright Copyright 2014, NetCommons Project */ App::uses('NetCommonsControllerTestCase', 'NetCommons.TestSuite'); App::uses('WorkflowComponent', 'Workflow.Controller/Component'); /** * WorkflowControllerAddTest * * @author Shohei Nakajima * @package NetCommons\Workflow\TestSuite */ abstract class WorkflowControllerAddTest extends NetCommonsControllerTestCase { /** * addアクションのGETテスト * * @param array $urlOptions URLオプション * @param array $assert テストの期待値 * @param string|null $exception Exception * @param string $return testActionの実行後の結果 * @dataProvider dataProviderAddGet * @return void */ public function testAddGet($urlOptions, $assert, $exception = null, $return = 'view') { //テスト実施 $url = Hash::merge(array( 'plugin' => $this->plugin, 'controller' => $this->_controller, 'action' => 'add', ), $urlOptions); $this->_testGetAction($url, $assert, $exception, $return); } /** * addアクションのGETテスト(作成権限のみ) * * @param array $urlOptions URLオプション * @param array $assert テストの期待値 * @param string|null $exception Exception * @param string $return testActionの実行後の結果 * @dataProvider dataProviderAddGetByCreatable * @return void */ public function testAddGetByCreatable($urlOptions, $assert, $exception = null, $return = 'view') { //ログイン TestAuthGeneral::login($this, Role::ROOM_ROLE_KEY_GENERAL_USER); //テスト実施 $url = Hash::merge(array( 'plugin' => $this->plugin, 'controller' => $this->_controller, 'action' => 'add', ), $urlOptions); $this->_testGetAction($url, $assert, $exception, $return); //ログアウト TestAuthGeneral::logout($this); } /** * addアクションのPOSTテスト * * @param array $data POSTデータ * @param string $role ロール * @param array $urlOptions URLオプション * @param string|null $exception Exception * @param string $return testActionの実行後の結果 * @dataProvider dataProviderAddPost * @return void */ public function testAddPost($data, $role, $urlOptions, $exception = null, $return = 'view') { //ログイン if (isset($role)) { TestAuthGeneral::login($this, $role); } //テスト実施 $this->_testPostAction( 'post', $data, Hash::merge(array('action' => 'add'), $urlOptions), $exception, $return ); //正常の場合、リダイレクト if (! $exception) { $header = $this->controller->response->header(); $this->assertNotEmpty($header['Location']); } //ログアウト if (isset($role)) { TestAuthGeneral::logout($this); } } /** * addアクションのValidateionErrorテスト * * @param array $data POSTデータ * @param array $urlOptions URLオプション * @param string|null $validationError ValidationError * @dataProvider dataProviderAddValidationError * @return void */ public function testAddValidationError($data, $urlOptions, $validationError = null) { //ログイン TestAuthGeneral::login($this); //テスト実施 $this->_testActionOnValidationError( 'post', $data, Hash::merge(array('action' => 'add'), $urlOptions), $validationError ); //ログアウト TestAuthGeneral::logout($this); } }