Carsten Brandt
10 years ago
13 changed files with 452 additions and 1 deletions
@ -0,0 +1,48 @@
|
||||
language: php |
||||
|
||||
php: |
||||
- 5.4 |
||||
- 5.5 |
||||
- 5.6 |
||||
- 7.0 |
||||
- hhvm |
||||
- hhvm-nightly |
||||
|
||||
# run build against hhvm but allow them to fail |
||||
# http://docs.travis-ci.com/user/build-configuration/#Rows-That-are-Allowed-To-Fail |
||||
matrix: |
||||
fast_finish: true |
||||
allow_failures: |
||||
- php: hhvm-nightly |
||||
- php: 7.0 |
||||
|
||||
# faster builds on new travis setup not using sudo |
||||
sudo: false |
||||
|
||||
# cache vendor dirs |
||||
cache: |
||||
directories: |
||||
- vendor |
||||
- $HOME/.composer/cache |
||||
|
||||
install: |
||||
- travis_retry composer self-update && composer --version |
||||
- travis_retry composer global require "fxp/composer-asset-plugin:1.0.0" |
||||
- export PATH="$HOME/.composer/vendor/bin:$PATH" |
||||
- travis_retry composer install --prefer-dist --no-interaction |
||||
|
||||
before_script: |
||||
- | |
||||
if [ $TRAVIS_PHP_VERSION = '5.6' ]; then |
||||
PHPUNIT_FLAGS="--coverage-clover=coverage.clover" |
||||
fi |
||||
|
||||
script: |
||||
- phpunit --verbose $PHPUNIT_FLAGS |
||||
|
||||
after_script: |
||||
- | |
||||
if [ $TRAVIS_PHP_VERSION = '5.6' ]; then |
||||
travis_retry wget https://scrutinizer-ci.com/ocular.phar |
||||
php ocular.phar code-coverage:upload --format=php-clover coverage.clover |
||||
fi |
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<phpunit bootstrap="./tests/bootstrap.php" |
||||
colors="true" |
||||
convertErrorsToExceptions="true" |
||||
convertNoticesToExceptions="true" |
||||
convertWarningsToExceptions="true" |
||||
stopOnFailure="false"> |
||||
<testsuites> |
||||
<testsuite name="Test Suite"> |
||||
<directory>./tests</directory> |
||||
</testsuite> |
||||
</testsuites> |
||||
</phpunit> |
@ -0,0 +1,31 @@
|
||||
<?php |
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\bootstrap\ButtonDropdown; |
||||
|
||||
/** |
||||
* @group bootstrap |
||||
*/ |
||||
class ButtonDropdownTest extends TestCase |
||||
{ |
||||
public function testContainerOptions() |
||||
{ |
||||
$containerClass = "dropup"; |
||||
|
||||
ButtonDropdown::$counter = 0; |
||||
$out = ButtonDropdown::widget([ |
||||
'containerOptions' => [ |
||||
'class' => $containerClass, |
||||
], |
||||
'label' => 'Action', |
||||
'dropdown' => [ |
||||
'items' => [ |
||||
['label' => 'DropdownA', 'url' => '/'], |
||||
['label' => 'DropdownB', 'url' => '#'], |
||||
], |
||||
], |
||||
]); |
||||
|
||||
$this->assertContains("$containerClass btn-group", $out); |
||||
} |
||||
} |
@ -0,0 +1,74 @@
|
||||
<?php |
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\bootstrap\Collapse; |
||||
|
||||
/** |
||||
* @group bootstrap |
||||
*/ |
||||
class CollapseTest extends TestCase |
||||
{ |
||||
public function testRender() |
||||
{ |
||||
Collapse::$counter = 0; |
||||
$output = Collapse::widget([ |
||||
'items' => [ |
||||
[ |
||||
'label' => 'Collapsible Group Item #1', |
||||
'content' => 'test content1', |
||||
], |
||||
[ |
||||
'label' => '<h1>Collapsible Group Item #2</h1>', |
||||
'content' => '<h2>test content2</h2>', |
||||
'contentOptions' => [ |
||||
'class' => 'testContentOptions2' |
||||
], |
||||
'options' => [ |
||||
'class' => 'testClass2', |
||||
'id' => 'testId2' |
||||
], |
||||
'encode' => true |
||||
], |
||||
[ |
||||
'label' => '<h1>Collapsible Group Item #3</h1>', |
||||
'content' => '<h2>test content3</h2>', |
||||
'contentOptions' => [ |
||||
'class' => 'testContentOptions3' |
||||
], |
||||
'options' => [ |
||||
'class' => 'testClass3', |
||||
'id' => 'testId3' |
||||
], |
||||
'encode' => false |
||||
], |
||||
[ |
||||
'label' => '<h1>Collapsible Group Item #4</h1>', |
||||
'content' => '<h1>test content4</h1>', |
||||
], |
||||
] |
||||
]); |
||||
|
||||
$this->assertEqualsWithoutLE(<<<HTML |
||||
<div id="w0" class="panel-group"> |
||||
<div class="panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a class="collapse-toggle" href="#w0-collapse1" data-toggle="collapse" data-parent="#w0">Collapsible Group Item #1</a> |
||||
</h4></div> |
||||
<div id="w0-collapse1" class="panel-collapse collapse"><div class="panel-body">test content1</div> |
||||
</div></div> |
||||
<div id="testId2" class="testClass2 panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a class="collapse-toggle" href="#w0-collapse2" data-toggle="collapse" data-parent="#w0"><h1>Collapsible Group Item #2</h1></a> |
||||
</h4></div> |
||||
<div id="w0-collapse2" class="testContentOptions2 panel-collapse collapse"><div class="panel-body"><h2>test content2</h2></div> |
||||
</div></div> |
||||
<div id="testId3" class="testClass3 panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a class="collapse-toggle" href="#w0-collapse3" data-toggle="collapse" data-parent="#w0"><h1>Collapsible Group Item #3</h1></a> |
||||
</h4></div> |
||||
<div id="w0-collapse3" class="testContentOptions3 panel-collapse collapse"><div class="panel-body"><h2>test content3</h2></div> |
||||
</div></div> |
||||
<div class="panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a class="collapse-toggle" href="#w0-collapse4" data-toggle="collapse" data-parent="#w0"><h1>Collapsible Group Item #4</h1></a> |
||||
</h4></div> |
||||
<div id="w0-collapse4" class="panel-collapse collapse"><div class="panel-body"><h1>test content4</h1></div> |
||||
</div></div> |
||||
</div> |
||||
|
||||
HTML |
||||
, $output); |
||||
} |
||||
} |
@ -0,0 +1,50 @@
|
||||
<?php |
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\bootstrap\Dropdown; |
||||
|
||||
/** |
||||
* Tests for Dropdown widget |
||||
* |
||||
* @group bootstrap |
||||
*/ |
||||
class DropdownTest extends TestCase |
||||
{ |
||||
public function testIds() |
||||
{ |
||||
Dropdown::$counter = 0; |
||||
$out = Dropdown::widget( |
||||
[ |
||||
'items' => [ |
||||
[ |
||||
'label' => 'Page1', |
||||
'content' => 'Page1', |
||||
], |
||||
[ |
||||
'label' => 'Dropdown1', |
||||
'items' => [ |
||||
['label' => 'Page2', 'content' => 'Page2'], |
||||
['label' => 'Page3', 'content' => 'Page3'], |
||||
] |
||||
], |
||||
[ |
||||
'label' => 'Dropdown2', |
||||
'visible' => false, |
||||
'items' => [ |
||||
['label' => 'Page4', 'content' => 'Page4'], |
||||
['label' => 'Page5', 'content' => 'Page5'], |
||||
] |
||||
] |
||||
] |
||||
] |
||||
); |
||||
|
||||
$expected = <<<EXPECTED |
||||
<ul id="w0" class="dropdown-menu"><li class="dropdown-header">Page1</li> |
||||
<li class="dropdown-submenu"><a href="#" tabindex="-1">Dropdown1</a><ul class="dropdown-menu"><li class="dropdown-header">Page2</li> |
||||
<li class="dropdown-header">Page3</li></ul></li></ul> |
||||
EXPECTED; |
||||
|
||||
$this->assertEqualsWithoutLE($expected, $out); |
||||
} |
||||
} |
@ -0,0 +1,50 @@
|
||||
<?php |
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\bootstrap\Nav; |
||||
|
||||
/** |
||||
* Tests for Nav widget |
||||
* |
||||
* @group bootstrap |
||||
*/ |
||||
class NavTest extends TestCase |
||||
{ |
||||
public function testIds() |
||||
{ |
||||
Nav::$counter = 0; |
||||
$out = Nav::widget( |
||||
[ |
||||
'items' => [ |
||||
[ |
||||
'label' => 'Page1', |
||||
'content' => 'Page1', |
||||
], |
||||
[ |
||||
'label' => 'Dropdown1', |
||||
'items' => [ |
||||
['label' => 'Page2', 'content' => 'Page2'], |
||||
['label' => 'Page3', 'content' => 'Page3'], |
||||
] |
||||
], |
||||
[ |
||||
'label' => 'Dropdown2', |
||||
'visible' => false, |
||||
'items' => [ |
||||
['label' => 'Page4', 'content' => 'Page4'], |
||||
['label' => 'Page5', 'content' => 'Page5'], |
||||
] |
||||
] |
||||
] |
||||
] |
||||
); |
||||
|
||||
$expected = <<<EXPECTED |
||||
<ul id="w0" class="nav"><li><a href="#">Page1</a></li> |
||||
<li class="dropdown"><a class="dropdown-toggle" href="#" data-toggle="dropdown">Dropdown1 <b class="caret"></b></a><ul id="w1" class="dropdown-menu"><li class="dropdown-header">Page2</li> |
||||
<li class="dropdown-header">Page3</li></ul></li></ul> |
||||
EXPECTED; |
||||
|
||||
$this->assertEqualsWithoutLE($expected, $out); |
||||
} |
||||
} |
@ -0,0 +1,74 @@
|
||||
<?php |
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\bootstrap\Tabs; |
||||
|
||||
/** |
||||
* Tests for Tabs widget |
||||
* |
||||
* @group bootstrap |
||||
*/ |
||||
class TabsTest extends TestCase |
||||
{ |
||||
/** |
||||
* Each tab should have a corresponding unique ID |
||||
* |
||||
* @see https://github.com/yiisoft/yii2/issues/6150 |
||||
*/ |
||||
public function testIds() |
||||
{ |
||||
Tabs::$counter = 0; |
||||
$out = Tabs::widget([ |
||||
'items' => [ |
||||
[ |
||||
'label' => 'Page1', 'content' => 'Page1', |
||||
], |
||||
[ |
||||
'label' => 'Dropdown1', |
||||
'items' => [ |
||||
['label' => 'Page2', 'content' => 'Page2'], |
||||
['label' => 'Page3', 'content' => 'Page3'], |
||||
] |
||||
], |
||||
[ |
||||
'label' => 'Dropdown2', |
||||
'items' => [ |
||||
['label' => 'Page4', 'content' => 'Page4'], |
||||
['label' => 'Page5', 'content' => 'Page5'], |
||||
] |
||||
] |
||||
] |
||||
]); |
||||
|
||||
$page1 = 'w0-tab0'; |
||||
$page2 = 'w0-dd1-tab0'; |
||||
$page3 = 'w0-dd1-tab1'; |
||||
$page4 = 'w0-dd2-tab0'; |
||||
$page5 = 'w0-dd2-tab1'; |
||||
|
||||
$shouldContain = [ |
||||
'w0', // nav widget container |
||||
"#$page1", // Page1 |
||||
|
||||
'w1', // Dropdown1 |
||||
"$page2", // Page2 |
||||
"$page3", // Page3 |
||||
|
||||
|
||||
'w2', // Dropdown2 |
||||
"#$page4", // Page4 |
||||
"#$page5", // Page5 |
||||
|
||||
// containers |
||||
"id=\"$page1\"", |
||||
"id=\"$page2\"", |
||||
"id=\"$page3\"", |
||||
"id=\"$page4\"", |
||||
"id=\"$page5\"", |
||||
]; |
||||
|
||||
foreach ($shouldContain as $string) { |
||||
$this->assertContains($string, $out); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,83 @@
|
||||
<?php |
||||
|
||||
namespace yiiunit\extensions\bootstrap; |
||||
|
||||
use yii\di\Container; |
||||
use yii\helpers\ArrayHelper; |
||||
use Yii; |
||||
|
||||
/** |
||||
* This is the base class for all yii framework unit tests. |
||||
*/ |
||||
abstract class TestCase extends \PHPUnit_Framework_TestCase |
||||
{ |
||||
protected function setUp() |
||||
{ |
||||
parent::setUp(); |
||||
$this->mockWebApplication(); |
||||
} |
||||
|
||||
/** |
||||
* Clean up after test. |
||||
* By default the application created with [[mockApplication]] will be destroyed. |
||||
*/ |
||||
protected function tearDown() |
||||
{ |
||||
parent::tearDown(); |
||||
$this->destroyApplication(); |
||||
} |
||||
|
||||
/** |
||||
* Populates Yii::$app with a new application |
||||
* The application will be destroyed on tearDown() automatically. |
||||
* @param array $config The application configuration, if needed |
||||
* @param string $appClass name of the application class to create |
||||
*/ |
||||
protected function mockApplication($config = [], $appClass = '\yii\console\Application') |
||||
{ |
||||
new $appClass(ArrayHelper::merge([ |
||||
'id' => 'testapp', |
||||
'basePath' => __DIR__, |
||||
'vendorPath' => dirname(__DIR__) . '/vendor', |
||||
], $config)); |
||||
} |
||||
|
||||
protected function mockWebApplication($config = [], $appClass = '\yii\web\Application') |
||||
{ |
||||
new $appClass(ArrayHelper::merge([ |
||||
'id' => 'testapp', |
||||
'basePath' => __DIR__, |
||||
'vendorPath' => dirname(__DIR__) . '/vendor', |
||||
'components' => [ |
||||
'request' => [ |
||||
'cookieValidationKey' => 'wefJDF8sfdsfSDefwqdxj9oq', |
||||
'scriptFile' => __DIR__ .'/index.php', |
||||
'scriptUrl' => '/index.php', |
||||
], |
||||
] |
||||
], $config)); |
||||
} |
||||
|
||||
/** |
||||
* Destroys application in Yii::$app by setting it to null. |
||||
*/ |
||||
protected function destroyApplication() |
||||
{ |
||||
Yii::$app = null; |
||||
Yii::$container = new Container(); |
||||
} |
||||
|
||||
/** |
||||
* Asserting two strings equality ignoring line endings |
||||
* |
||||
* @param string $expected |
||||
* @param string $actual |
||||
*/ |
||||
public function assertEqualsWithoutLE($expected, $actual) |
||||
{ |
||||
$expected = str_replace("\r\n", "\n", $expected); |
||||
$actual = str_replace("\r\n", "\n", $actual); |
||||
|
||||
$this->assertEquals($expected, $actual); |
||||
} |
||||
} |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
|
||||
// ensure we get report on all possible php errors |
||||
error_reporting(-1); |
||||
|
||||
define('YII_ENABLE_ERROR_HANDLER', false); |
||||
define('YII_DEBUG', true); |
||||
$_SERVER['SCRIPT_NAME'] = '/' . __DIR__; |
||||
$_SERVER['SCRIPT_FILENAME'] = __FILE__; |
||||
|
||||
require_once(__DIR__ . '/../vendor/autoload.php'); |
||||
require_once(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); |
||||
|
||||
Yii::setAlias('@yiiunit/extensions/bootstrap', __DIR__); |
||||
Yii::setAlias('@yii/bootstrap', dirname(__DIR__)); |
Loading…
Reference in new issue