3 * Ethna_UnitTestCase.php
5 * @author Takuya Ookubo <sfio@sakura.ai.to>
6 * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
14 * @author Takuya Ookubo <sfio@sakura.ai.to>
18 class Ethna_UnitTestCase extends UnitTestCase
20 /** @var object Ethna_Backend backendオブジェクト */
23 /** @var object Ethna_Controller controllerオブジェクト */
26 /** @var object Ethna_Controller controllerオブジェクト($controllerの省略形) */
29 /** @var object Ethna_Session セッションオブジェクト */
32 /** @var string アクション名 */
35 /** @var object Ethna_ActionForm アクションフォームオブジェクト */
38 /** @var object Ethna_ActionForm アクションフォームオブジェクト($action_formの省略形) */
41 /** @var object Ethna_ActionClass アクションクラスオブジェクト */
44 /** @var object Ethna_ActionClass アクションクラスオブジェクト($action_classの省略形) */
47 /** @var string ビュー名 */
50 /** @var object Ethna_ViewClass viewクラスオブジェクト */
53 /** @var object Ethna_ViewClass viewクラスオブジェクト($view_classの省略形) */
57 * Ethna_UnitTestCaseのコンストラクタ
60 * @param object Ethna_Controller &$controller コントローラオブジェクト
62 function Ethna_UnitTestCase(&$controller)
64 parent::UnitTestCase();
67 $this->controller =& $controller;
68 $this->ctl =& $this->controller;
69 $this->backend =& $this->ctl->getBackend();
70 $this->session =& $this->backend->getSession();
73 $this->action_form = $this->af = null;
74 $this->action_class = $this->ac = null;
75 $this->view_class = $this->vc = null;
83 function _createActionForm($form_name)
85 $this->action_form =& new $form_name($this->ctl);
86 $this->af =& $this->action_form;
88 // controler&backendにafを関連付け
89 $this->ctl->action_name = $this->action_name;
90 $this->ctl->action_form =& $this->af;
91 $this->backend->action_form =& $this->af;
92 $this->backend->af =& $this->af;
94 // action_error, validator の初期化
95 // これにより、直前のテスト結果をひきずらない
97 $ae =& $this->ctl->getActionError();
99 unset($ae->action_form);
100 unset($this->ctl->class_factory->object['plugin']->obj_registry["Validator"]);
108 function createActionForm()
110 $form_name = $this->ctl->getActionFormName($this->action_name);
111 $this->_createActionForm($form_name);
118 * @return int $result
120 function validateOneTime()
122 if ($this->af == null) {
123 $this->createActionForm();
126 $result = $this->af->validate();
127 $this->af->ae->clear();
137 function createPlainActionForm()
139 $form_name = 'Ethna_ActionForm';
140 $this->_createActionForm($form_name);
148 function createActionClass()
150 if ($this->af == null) {
151 $this->createActionForm();
155 $action_class_name = $this->ctl->getActionClassName($this->action_name);
156 $this->action_class =& new $action_class_name($this->backend);
157 $this->ac =& $this->action_class;
160 $this->backend->action_class =& $this->ac;
161 $this->backend->ac =& $this->ac;
169 function createViewClass()
171 if ($this->af == null) {
172 $this->createPlainActionForm();
176 $view_class_name = $this->ctl->getViewClassName($this->forward_name);
177 $this->view_class =& new $view_class_name($this->backend, $this->forward_name, $this->ctl->_getForwardPath($this->forward_name));
178 $this->vc =& $this->view_class;