FuelPHPのOrmの使い方がよくわからないというtweetを見かけたので、テストコードの一部をさらします。
DBの設定はこんな感じ
CREATE TABLE IF NOT EXISTS <code>news</code> ( <code>news_id</code> int(11) NOT NULL AUTO_INCREMENT, <code>news_title</code> varchar(255) NOT NULL, <code>news_text</code> text NOT NULL, <code>news_created_at</code> datetime NOT NULL DEFAULT '0000-00-00 00:00:00', <code>news_updated_at</code> datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (<code>news_id</code>) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; INSERT into news values(NULL ,"タイトル" , "本文" , "2012-07-07 00:10:00 11:11:11", "2012-07-07 00:10:00 11:11:11");
テストコード。
function setUp()で行っているのは、
DBのリストア処理です。
Model_Newsをテストしているコードになります。
<?php
/**
* @group App
*/
class Test_Model_News extends TestCase
{
function setUp()
{
$com = "mysql -uroot -pパスワード news_test <"
.dirname(__FILE__)
."/sql/reset.sql";
system($com);
}
/*
* 1レコードインサートする
*/
public function test_insert()
{
$news = Model_News::forge();
$news->set("news_title" , "タイトル2");
$news->set("news_text" , "本文2");
$news->set("news_created_at" , date("Y-m-d H:i:s"));
$news->set("news_updated_at" , date("Y-m-d H:i:s"));
$insert = $news->save();
$insertdata = $news->to_array();
$this->assertEquals($insertdata["news_id"], 2);
}
/*
* update
*/
public function test_update()
{
$news_1 = Model_News::forge();
$news = $news_1->find(1);
$news->news_title = "タイトル更新";
$news->news_text = "更新本文";
$news->news_updated_at = date("Y-m-d H:i:s");
$ck = $news->save();
$this->assertTrue($ck);
$news_2 = $news->to_array();
$this->assertEquals($news_2["news_title"] , "タイトル更新");
}
/*
* delete
*/
public function test_delete()
{
//news_idが1のレコードを削除します。
//成功するとtrueが戻ります。
$news_1 = Model_News::forge();
$news = $news_1->find(1);
if($news)
{
$ck = $news->delete();
}
$flg = null;
if($ck)
{
$flg = true;
}
$this->assertTrue($flg);
// news_idが1を検索して、NULLが帰ってくる事を確認。
$news_2 = Model_News::forge();
$news = $news_1->find(1);
$this->assertNull($news);
}
}