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.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							112 lines
						
					
					
						
							3.4 KiB
						
					
					
				<?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() | 
						|
    { | 
						|
        // dirty way to have Request object not throwing exception when running testHomeLinkNull() | 
						|
        $_SERVER['SCRIPT_FILENAME'] = "index.php"; | 
						|
        $_SERVER['SCRIPT_NAME'] = "index.php"; | 
						|
 | 
						|
        parent::setUp(); | 
						|
 | 
						|
        $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">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">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); | 
						|
    } | 
						|
} |