FuelPHPのOrm

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