mockApplication([
'components' => [
'urlManager' => [
'scriptUrl' => '/',
],
],
]);
}
/**
* Get pagination.
* @param int $page
* @return Pagination
*/
private function getPagination($page)
{
$pagination = new Pagination();
$pagination->setPage($page);
$pagination->totalCount = 500;
$pagination->route = 'test';
return $pagination;
}
public function testFirstLastPageLabels()
{
$pagination = $this->getPagination(5);
$output = LinkPager::widget([
'pagination' => $pagination,
'firstPageLabel' => true,
'lastPageLabel' => true,
]);
$this->assertStringContainsString(
'
1',
$output,
);
$this->assertStringContainsString(
'25',
$output,
);
$output = LinkPager::widget([
'pagination' => $pagination,
'firstPageLabel' => 'First',
'lastPageLabel' => 'Last',
]);
$this->assertStringContainsString(
'First',
$output,
);
$this->assertStringContainsString(
'Last',
$output,
);
$output = LinkPager::widget([
'pagination' => $pagination,
'firstPageLabel' => false,
'lastPageLabel' => false,
]);
$this->assertStringNotContainsString('', $output);
$this->assertStringNotContainsString('', $output);
}
public function testDisabledPageElementOptions()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(0),
'disabledListItemSubTagOptions' => ['class' => 'foo-bar'],
]);
$this->assertStringContainsString('«', $output);
}
public function testDisabledPageElementOptionsWithTagOption()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(0),
'disabledListItemSubTagOptions' => ['class' => 'foo-bar', 'tag' => 'div'],
]);
$this->assertStringContainsString('«
', $output);
}
public function testDisableCurrentPageButton()
{
$pagination = $this->getPagination(5);
$output = LinkPager::widget([
'pagination' => $pagination,
'disableCurrentPageButton' => false,
]);
$this->assertStringContainsString(
'6',
$output,
);
$output = LinkPager::widget([
'pagination' => $pagination,
'disableCurrentPageButton' => true,
]);
$this->assertStringContainsString('6', $output);
}
public function testOptionsWithTagOption()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(5),
'options' => [
'tag' => 'div',
],
]);
$this->assertTrue(StringHelper::startsWith($output, ''));
$this->assertTrue(StringHelper::endsWith($output, '
'));
}
public function testLinkWrapOptions()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(1),
'linkContainerOptions' => [
'tag' => 'div',
'class' => 'my-class',
],
]);
$this->assertStringContainsString(
'',
$output
);
$this->assertStringContainsString(
'',
$output
);
}
public function testWithTwoButtons()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(0),
'maxButtonCount' => 2,
]);
$this->assertEqualsWithoutLE(
<<«
1
2
»
HTML,
$output,
);
$output = LinkPager::widget([
'pagination' => $this->getPagination(1),
'maxButtonCount' => 2,
]);
$this->assertEqualsWithoutLE(
<<«
2
3
»
HTML,
$output,
);
}
public function testWithOneButton()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(0),
'maxButtonCount' => 1,
]);
$this->assertEqualsWithoutLE(
<<«
1
»
HTML,
$output,
);
$output = LinkPager::widget([
'pagination' => $this->getPagination(1),
'maxButtonCount' => 1,
]);
$this->assertEqualsWithoutLE(
<<«
2
»
HTML,
$output,
);
}
public function testWithNoButtons()
{
$output = LinkPager::widget([
'pagination' => $this->getPagination(0),
'maxButtonCount' => 0,
]);
$this->assertEqualsWithoutLE(
<<«
»
HTML,
$output
);
$output = LinkPager::widget([
'pagination' => $this->getPagination(1),
'maxButtonCount' => 0,
]);
$this->assertEqualsWithoutLE(
<<«
»
HTML,
$output
);
}
/**
* @see https://github.com/yiisoft/yii2/issues/15536
*/
public function testShouldTriggerInitEvent()
{
$initTriggered = false;
$output = LinkPager::widget([
'pagination' => $this->getPagination(1),
'on init' => function () use (&$initTriggered) {
$initTriggered = true;
}
]);
$this->assertTrue($initTriggered);
}
}