FuelPHP のコアは、ユニットテストが書かれていない部分があります。オープンソースなので、「無ければ作る」ということで少し書いてみました。
今回書いたのは、ページネーションクラスです。http://docs.fuelphp.com/classes/pagination.html にあるサンプルを参考に作成しました。今のところ prev_link と next_link だけです。
<?php
/**
* Part of the Fuel framework.
*
* @package Fuel
* @version 1.0
* @author Fuel Development Team
* @license MIT License
* @copyright 2010 - 2012 Fuel Development Team
* @link http://fuelphp.com
*/
namespace FuelCore;
/**
* Pagination class tests
*
* @group Core
* @group Pagination
*/
class Test_Pagination extends TestCase
{
public function setup()
{
Pagination::set_config(array(
'pagination_url' => 'http://docs.fuelphp.com/',
'uri_segment' => 2,
'total_items' => 10,
'per_page' => 5,
));
}
/**
* first page: previous inactive
*
*/
public function test_previouslink_inactive()
{
Pagination::set_config(array(
'current_page' => 1,
));
$output = Pagination::prev_link('prev');
$expected = ' <span class="previous-inactive">« prev </span>';
$this->assertEquals($expected, $output);
}
public function test_previouslink_active()
{
Pagination::set_config(array(
'current_page' => 2,
));
$output = Pagination::prev_link('prev');
$expected = '<span class="previous"> <a href="http://docs.fuelphp.com">« prev</a> </span>';
$this->assertEquals($expected, $output);
}
public function test_nextlink_active()
{
Pagination::set_config(array(
'current_page' => 1,
));
$output = Pagination::next_link('next');
$expected = '<span class="next"> <a href="http://docs.fuelphp.com/2">next »</a> </span>';
$this->assertEquals($expected, $output);
}
/**
* last page: next inactive
*
*/
public function test_nextlink_inactive()
{
Pagination::set_config(array(
'current_page' => 2,
));
$output = Pagination::next_link('next');
$expected = ' <span class="next-inactive">next » </span>';
$this->assertEquals($expected, $output);
}
}
github で pull request したところ、コアにマージされました。ver1.3 以降の FuelPHP で同梱される予定です。(ユニットテストの追加は、開発ブランチにプルリクエストしてください)
7月22日(日)に FuelPHP 勉強会 大須 vol.2 を開催予定ですが、vol.3 ではユニットテストを取り上げるのも一案かもしれません。