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.
		
		
		
		
		
			
		
			
				
					
					
						
							168 lines
						
					
					
						
							5.7 KiB
						
					
					
				
			
		
		
	
	
							168 lines
						
					
					
						
							5.7 KiB
						
					
					
				| <?php | |
|  | |
| namespace yiiunit\extensions\bootstrap; | |
|  | |
| use yii\base\DynamicModel; | |
| use yii\bootstrap\Html; | |
|  | |
| /** | |
|  * @group bootstrap | |
|  */ | |
| class HtmlTest extends TestCase | |
| { | |
|     /** | |
|      * Data provider for [[testIcon()]] | |
|      * @return array test data | |
|      */ | |
|     public function dataProviderIcon() | |
|     { | |
|         return [ | |
|             [ | |
|                 'star', | |
|                 [], | |
|                 '<span class="glyphicon glyphicon-star"></span>', | |
|             ], | |
|             [ | |
|                 'star', | |
|                 [ | |
|                     'tag' => 'i', | |
|                     'prefix' => 'my-icon icon-', | |
|                 ], | |
|                 '<i class="my-icon icon-star"></i>', | |
|             ], | |
|         ]; | |
|     } | |
|  | |
|     /** | |
|      * @dataProvider dataProviderIcon | |
|      * | |
|      * @param $name | |
|      * @param $options | |
|      * @param $expectedHtml | |
|      */ | |
|     public function testIcon($name, array $options, $expectedHtml) | |
|     { | |
|         $this->assertEquals($expectedHtml, Html::icon($name, $options)); | |
|     } | |
|  | |
|     /** | |
|      * @return array | |
|      */ | |
|     public function dataProviderStaticControl() | |
|     { | |
|         return [ | |
|             [ | |
|                 'foo', | |
|                 [], | |
|                 '<p class="form-control-static">foo</p>' | |
|             ], | |
|             [ | |
|                 '<html>', | |
|                 [], | |
|                 '<p class="form-control-static"><html></p>' | |
|             ], | |
|             [ | |
|                 '<html></html>', | |
|                 [ | |
|                     'encode' => false | |
|                 ], | |
|                 '<p class="form-control-static"><html></html></p>' | |
|             ], | |
|         ]; | |
|     } | |
|  | |
|     /** | |
|      * @dataProvider dataProviderStaticControl | |
|      * | |
|      * @param string $value | |
|      * @param array $options | |
|      * @param string $expectedHtml | |
|      */ | |
|     public function testStaticControl($value, array $options, $expectedHtml) | |
|     { | |
|         $this->assertEquals($expectedHtml, Html::staticControl($value, $options)); | |
|     } | |
|  | |
|     public function testRadioList() | |
|     { | |
|         $this->assertEquals('<div></div>', Html::radioList('test')); | |
|  | |
|         $dataItems = [ | |
|             'value1' => 'text1', | |
|             'value2' => 'text2', | |
|         ]; | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="radio"><label><input type="radio" name="test" value="value1"> text1</label></div> | |
| <div class="radio"><label><input type="radio" name="test" value="value2" checked> text2</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::radioList('test', ['value2'], $dataItems)); | |
|  | |
|         $expected = <<<'EOD' | |
| <div>0<label>text1 <input type="radio" name="test" value="value1"></label> | |
| 1<label>text2 <input type="radio" name="test" value="value2" checked></label></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::radioList('test', ['value2'], $dataItems, [ | |
|             'item' => function ($index, $label, $name, $checked, $value) { | |
|                 return $index . Html::label($label . ' ' . Html::radio($name, $checked, ['value' => $value])); | |
|             }, | |
|         ])); | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="radio"><label><input type="radio" name="test" value="value"> label&</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::radioList('test', [], ['value' => 'label&'])); | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="radio"><label><input type="radio" name="test" value="value"> label&</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::radioList('test', [], ['value' => 'label&'], ['encode' => false])); | |
|     } | |
|  | |
|     public function testCheckboxList() | |
|     { | |
|         $this->assertEquals('<div></div>', Html::checkboxList('test')); | |
|  | |
|         $dataItems = [ | |
|             'value1' => 'text1', | |
|             'value2' => 'text2', | |
|         ]; | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="checkbox"><label><input type="checkbox" name="test[]" value="value1"> text1</label></div> | |
| <div class="checkbox"><label><input type="checkbox" name="test[]" value="value2" checked> text2</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::checkboxList('test', ['value2'], $dataItems)); | |
|  | |
|         $expected = <<<'EOD' | |
| <div>0<label>text1 <input type="checkbox" name="test[]" value="value1"></label> | |
| 1<label>text2 <input type="checkbox" name="test[]" value="value2" checked></label></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::checkboxList('test', ['value2'], $dataItems, [ | |
|             'item' => function ($index, $label, $name, $checked, $value) { | |
|                 return $index . Html::label($label . ' ' . Html::checkbox($name, $checked, ['value' => $value])); | |
|             }, | |
|         ])); | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="checkbox"><label><input type="checkbox" name="test[]" value="value" checked> label&</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::checkboxList('test', 'value', ['value' => 'label&'])); | |
|  | |
|         $expected = <<<'EOD' | |
| <div><div class="checkbox"><label><input type="checkbox" name="test[]" value="value" checked> label&</label></div></div> | |
| EOD; | |
|         $this->assertEqualsWithoutLE($expected, Html::checkboxList('test', 'value', ['value' => 'label&'], ['encode' => false])); | |
|     } | |
|  | |
|     public function testError() | |
|     { | |
|         $model = new DynamicModel(); | |
|         $model->addError('foo', 'Some error message.'); | |
|  | |
|         $this->assertEquals('<p class="help-block help-block-error">Some error message.</p>', Html::error($model, 'foo')); | |
|         $this->assertEquals('<p class="custom-class">Some error message.</p>', Html::error($model, 'foo', ['class' => 'custom-class'])); | |
|         $this->assertEquals('<p>Some error message.</p>', Html::error($model, 'foo', ['class' => null])); | |
|         $this->assertEquals('<div class="help-block help-block-error">Some error message.</div>', Html::error($model, 'foo', ['tag' => 'div'])); | |
|     } | |
| } |