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); } }