<?php
/* SVN FILE: $Id: soft_deletable.test.php 38 2007-11-26 19:36:27Z mgiglesias $ */
/**
* Test cases for SoftDeletable Behavior, which are basically testing methods to test several
* aspects of slug functionality.
*
* Go to the SoftDeletable Behavior page at Cake Syrup to learn more about it:
*
* http://cake-syrup.sourceforge.net/ingredients/soft-deletable-behavior/
*
* @filesource
* @author Mariano Iglesias
* @link http://cake-syrup.sourceforge.net/ingredients/soft-deletable-behavior/
* @version $Revision: 38 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
* @package app.tests
* @subpackage app.tests.cases.behaviors
*/
App::import('Behavior', 'soft_deletable');
App::import('Core', 'ConnectionManager');
/**
* Base model that to load SoftDeletable behavior on every test model.
*
* @package app.tests
* @subpackage app.tests.cases.behaviors
*/
class SoftDeletableTestModel extends CakeTestModel
{
/**
* Behaviors for this model
*
* @var array
* @access public
*/
var $actsAs = array('SoftDeletable');
}
/**
* Model used in test case.
*
* @package app.tests
* @subpackage app.tests.cases.behaviors
*/
class DeletableArticle extends SoftDeletableTestModel
{
/**
* Name for this model
*
* @var string
* @access public
*/
var $name = 'DeletableArticle';
/**
* hasMany releations for this model
*
* @var array
* @access public
*/
var $hasMany = array('DeletableComment' => array('dependent' => true));
}
/**
* Model used in test case.
*
* @package app.tests
* @subpackage app.tests.cases.behaviors
*/
class DeletableComment extends SoftDeletableTestModel
{
/**
* Name for this model
*
* @var string
* @access public
*/
var $name = 'DeletableComment';
/**
* belongsTo releations for this model
*
* @var array
* @access public
*/
var $belongsTo = array('DeletableArticle');
}
/**
* Test case for SoftDeletable Behavior
*
* @package app.tests
* @subpackage app.tests.cases.models
*/
class SoftDeletableTestCase extends CakeTestCase
{
/**
* Fixtures associated with this test case
*
* @var array
* @access public
*/
var $fixtures = array('app.deletable_article', 'app.deletable_comment');
/**
* Method executed before each test
*
* @access public
*/
function startTest()
{
$this->DeletableArticle =& new DeletableArticle();
}
/**
* Method executed after each test
*
* @access public
*/
function endTest()
{
unset($this->DeletableArticle);
ClassRegistry::flush();
}
/**
* Test beforeFind callback
*
* @access public
*/
function testBeforeFind()
{
$Db =& ConnectionManager::getDataSource($this->DeletableArticle->useDbConfig);
$SoftDeletable =& new SoftDeletableBehavior();
$SoftDeletable->setup($this->DeletableArticle);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array());
$expected = array('conditions' => array('DeletableArticle.deleted' => '!= 1'));
$this->assertEqual($result, $expected);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => array('DeletableArticle.deleted' => 0)));
$expected = array('conditions' => array('DeletableArticle.deleted' => 0));
$this->assertEqual($result, $expected);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => array('DeletableArticle.deleted' => array(0, 1))));
$expected = array('conditions' => array('DeletableArticle.deleted' => array(0, 1)));
$this->assertEqual($result, $expected);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => array('DeletableArticle.id' => '> 0', 'or' => array('DeletableArticle.title' => 'Title', 'DeletableArticle.id' => '5'))));
$expected = array('conditions' => array('DeletableArticle.id' => '> 0', 'or' => array('DeletableArticle.title' => 'Title', 'DeletableArticle.id' => '5'), 'DeletableArticle.deleted' => '!= 1'));
$this->assertEqual($result, $expected);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => array('DeletableArticle.id' => '> 0', 'or' => array('DeletableArticle.title' => 'Title', 'DeletableArticle.id' => '5'), 'deleted' => 1)));
$expected = array('conditions' => array('DeletableArticle.id' => '> 0', 'or' => array('DeletableArticle.title' => 'Title', 'DeletableArticle.id' => '5'), 'deleted' => 1));
$this->assertEqual($result, $expected);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'id=1'));
$this->assertPattern('/^' . preg_quote($Db->name('DeletableArticle') . '.' . $Db->name('deleted')) . '\s*!=\s*1\s+AND\s+id\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => '1=1 LEFT JOIN table ON (table.column=DeletableArticle.id)'));
$this->assertPattern('/^' . preg_quote($Db->name('DeletableArticle') . '.' . $Db->name('deleted')) . '\s*!=\s*1\s+AND\s+1\s*=\s*1\s+LEFT JOIN table ON ' . preg_quote('(table.column=DeletableArticle.id)') . '$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'deleted=1'));
$this->assertPattern('/^' . preg_quote('deleted') . '\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'deleted = 1'));
$this->assertPattern('/^' . preg_quote('deleted') . '\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => $Db->name('deleted') . '=1'));
$this->assertPattern('/^' . preg_quote($Db->name('deleted')) . '\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'id > 0 AND deleted =1'));
$this->assertPattern('/^id > 0 AND deleted\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'mydeleted=1'));
$this->assertPattern('/^' . preg_quote($Db->name('DeletableArticle') . '.' . $Db->name('deleted')) . '\s*!=\s*1\s+AND\s+mydeleted\s*=\s*1$/', $result['conditions']);
$result = $SoftDeletable->beforeFind($this->DeletableArticle, array('conditions' => 'title = \'record is not deleted\''));
$this->assertPattern('/^' . preg_quote($Db->name('DeletableArticle') . '.' . $Db->name('deleted')) . '\s*!=\s*1\s+AND\s+title\s*=\s*\'' . preg_quote('record is not deleted') . '\'$/', $result['conditions']);
unset($SoftDeletable);
}
/**
* Test soft delete
*
* @access public
*/
function testFind()
{
$this->DeletableArticle->delete(2);
$this->DeletableArticle->delete(3);
$this->DeletableArticle->unbindModel(array('hasMany' => array('DeletableComment')));
$result = $this->DeletableArticle->find('all', array('fields' => array('id', 'title')));
$expected = array(
array('DeletableArticle' => array(
'id' => 1, 'title' => 'First Article'
))
);
$this->assertEqual($result, $expected);
$this->DeletableArticle->unbindModel(array('hasMany' => array('DeletableComment')));
$result = $this->DeletableArticle->find('all', array('conditions' => array('DeletableArticle.deleted' => 0), 'fields' => array('id', 'title')));
$expected = array(
array('DeletableArticle' => array(
'id' => 1, 'title' => 'First Article'
))
);
$this->assertEqual($result, $expected);
$this->DeletableArticle->unbindModel(array('hasMany' => array('DeletableComment')));
$result = $this->DeletableArticle->find('all', array('conditions' => array('DeletableArticle.deleted' => 1), 'fields' => array('id', 'title')));
$expected = array(
array('DeletableArticle' => array(
'id' => 2, 'title' => 'Second Article'
)),
array('DeletableArticle' => array(
'id' => 3, 'title' => 'Third Article'
))
);
$this->assertEqual($result, $expected);
$this->DeletableArticle->unbindModel(array('hasMany' => array('DeletableComment')));
$result = $this->DeletableArticle->find(
没有合适的资源?快使用搜索试试~ 我知道了~
soft_deletable-1.1.38
需积分: 0 3 下载量 87 浏览量
2008-08-24
14:51:50
上传
评论
收藏 5KB GZ 举报
温馨提示
共4个文件
php:4个
soft_deletable-1.1.38.tar.gz
资源详情
资源评论
资源推荐
收起资源包目录
soft_deletable-1.1.38.tar.gz (4个子文件)
app
tests
fixtures
deletable_article_fixture.php 2KB
deletable_comment_fixture.php 3KB
cases
behaviors
soft_deletable.test.php 24KB
models
behaviors
soft_deletable.php 10KB
共 4 条
- 1
longben
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WS2-32.lib,在编译程序中可以链接使用
- 秒懂傅里叶变换matlab程序实现过程
- ZEND解密dezender12
- sony 索尼IMX334摄像头模组电路板AD版硬件PCB图(6层板).zip
- 基于flask和echarts融合交易策略的bitfinex可视化微服务.zip
- 包含了wvp-assist.tar wvp-talk.tar zlmediakit.tar .
- 3r4efgh53wgrf43tw
- 2024新版Java基础从入门到精通全套视频+资料下载
- Spring AI大模型视频教程+ChatGPT视频教程+OpenAI大模型视频教程(资料+视频教程)
- ABB工业机器人教程PDF版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0