You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					113 lines
				
				3.5 KiB
			
		
		
			
		
	
	
					113 lines
				
				3.5 KiB
			| 
											10 years ago
										 | <?php
 | ||
|  | 
 | ||
|  | namespace yiiunit\extensions\bootstrap;
 | ||
|  | 
 | ||
|  | use yii\base\DynamicModel;
 | ||
|  | use yii\bootstrap\ActiveField;
 | ||
|  | use yii\bootstrap\ActiveForm;
 | ||
|  | use Yii;
 | ||
|  | 
 | ||
|  | class ActiveFieldTest extends TestCase
 | ||
|  | {
 | ||
|  |     /**
 | ||
|  |      * @var ActiveField
 | ||
|  |      */
 | ||
|  |     private $activeField;
 | ||
|  |     /**
 | ||
|  |      * @var DynamicModel
 | ||
|  |      */
 | ||
|  |     private $helperModel;
 | ||
|  |     /**
 | ||
|  |      * @var ActiveForm
 | ||
|  |      */
 | ||
|  |     private $helperForm;
 | ||
|  |     /**
 | ||
|  |      * @var string
 | ||
|  |      */
 | ||
|  |     private $attributeName = 'attributeName';
 | ||
|  | 
 | ||
|  |     protected function setUp()
 | ||
|  |     {
 | ||
|  |         parent::setUp();
 | ||
|  |         // dirty way to have Request object not throwing exception when running testHomeLinkNull()
 | ||
|  |         $_SERVER['SCRIPT_FILENAME'] = "index.php";
 | ||
|  |         $_SERVER['SCRIPT_NAME'] = "index.php";
 | ||
|  | 
 | ||
|  |         $this->mockWebApplication();
 | ||
|  | 
 | ||
|  |         $this->helperModel = new DynamicModel(['attributeName']);
 | ||
|  |         ob_start();
 | ||
|  |         $this->helperForm = new ActiveForm(['action' => '/something']);
 | ||
|  |         ob_end_clean();
 | ||
|  | 
 | ||
|  |         $this->activeField = new ActiveField(['form' => $this->helperForm]);
 | ||
|  |         $this->activeField->model = $this->helperModel;
 | ||
|  |         $this->activeField->attribute = $this->attributeName;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     // Tests :
 | ||
|  | 
 | ||
|  |     public function testRadioList()
 | ||
|  |     {
 | ||
|  |         $html = $this->activeField->radioList([1 => 'name1', 2 => 'name2'])->render();
 | ||
|  | 
 | ||
|  |         $expectedHtml = <<<HTML
 | ||
|  | <div class="form-group field-dynamicmodel-attributename">
 | ||
|  | <label class="control-label" for="dynamicmodel-attributename">Attribute Name</label>
 | ||
|  | <input type="hidden" name="DynamicModel[attributeName]" value=""><div id="dynamicmodel-attributename"><div class="radio"><label><input type="radio" name="DynamicModel[attributeName]" value="1"> name1</label></div>
 | ||
|  | <div class="radio"><label><input type="radio" name="DynamicModel[attributeName]" value="2"> name2</label></div></div>
 | ||
|  | 
 | ||
|  | <p class="help-block help-block-error"></p>
 | ||
|  | </div>
 | ||
|  | HTML;
 | ||
|  |         $this->assertEqualsWithoutLE($expectedHtml, $html);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public function testCheckboxList()
 | ||
|  |     {
 | ||
|  |         $html = $this->activeField->checkboxList([1 => 'name1', 2 => 'name2'])->render();
 | ||
|  | 
 | ||
|  |         $expectedHtml = <<<HTML
 | ||
|  | <div class="form-group field-dynamicmodel-attributename">
 | ||
|  | <label class="control-label" for="dynamicmodel-attributename">Attribute Name</label>
 | ||
|  | <input type="hidden" name="DynamicModel[attributeName]" value=""><div id="dynamicmodel-attributename"><div class="checkbox"><label><input type="checkbox" name="DynamicModel[attributeName][]" value="1"> name1</label></div>
 | ||
|  | <div class="checkbox"><label><input type="checkbox" name="DynamicModel[attributeName][]" value="2"> name2</label></div></div>
 | ||
|  | 
 | ||
|  | <p class="help-block help-block-error"></p>
 | ||
|  | </div>
 | ||
|  | HTML;
 | ||
|  |         $this->assertEqualsWithoutLE($expectedHtml, $html);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * @depends testRadioList
 | ||
|  |      *
 | ||
|  |      * @see https://github.com/yiisoft/yii2-bootstrap/issues/81
 | ||
|  |      */
 | ||
|  |     public function testRadioListItemOptions()
 | ||
|  |     {
 | ||
|  |         $content = $this->activeField->radioList([1 => 'name1', 2 => 'name2'], [
 | ||
|  |             'itemOptions' => [
 | ||
|  |                 'data-attribute' => 'test'
 | ||
|  |             ]
 | ||
|  |         ])->render();
 | ||
|  | 
 | ||
|  |         $this->assertContains('data-attribute="test"', $content);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * @depends testCheckboxList
 | ||
|  |      *
 | ||
|  |      * @see https://github.com/yiisoft/yii2-bootstrap/issues/81
 | ||
|  |      */
 | ||
|  |     public function testCheckboxListItemOptions()
 | ||
|  |     {
 | ||
|  |         $content = $this->activeField->checkboxList([1 => 'name1', 2 => 'name2'], [
 | ||
|  |             'itemOptions' => [
 | ||
|  |                 'data-attribute' => 'test'
 | ||
|  |             ]
 | ||
|  |         ])->render();
 | ||
|  | 
 | ||
|  |         $this->assertContains('data-attribute="test"', $content);
 | ||
|  |     }
 | ||
|  | }
 |