/**
  * testSaveMultipleHabtm method
  *
  * @return void
  */
 public function testSaveMultipleHabtm()
 {
     $this->loadFixtures('JoinA', 'JoinB', 'JoinC', 'JoinAB', 'JoinAC');
     $TestModel = new JoinA();
     $result = $TestModel->findById(1);
     $expected = array('JoinA' => array('id' => 1, 'name' => 'Join A 1', 'body' => 'Join A 1 Body', 'created' => '2008-01-03 10:54:23', 'updated' => '2008-01-03 10:54:23'), 'JoinB' => array(0 => array('id' => 2, 'name' => 'Join B 2', 'created' => '2008-01-03 10:55:02', 'updated' => '2008-01-03 10:55:02', 'JoinAsJoinB' => array('id' => 1, 'join_a_id' => 1, 'join_b_id' => 2, 'other' => 'Data for Join A 1 Join B 2', 'created' => '2008-01-03 10:56:33', 'updated' => '2008-01-03 10:56:33'))), 'JoinC' => array(0 => array('id' => 2, 'name' => 'Join C 2', 'created' => '2008-01-03 10:56:12', 'updated' => '2008-01-03 10:56:12', 'JoinAsJoinC' => array('id' => 1, 'join_a_id' => 1, 'join_c_id' => 2, 'other' => 'Data for Join A 1 Join C 2', 'created' => '2008-01-03 10:57:22', 'updated' => '2008-01-03 10:57:22'))));
     $this->assertEquals($expected, $result);
     $TestModel->id = 1;
     $data = array('JoinA' => array('id' => '1', 'name' => 'New name for Join A 1', 'updated' => self::date()), 'JoinB' => array(array('id' => 1, 'join_b_id' => 2, 'other' => 'New data for Join A 1 Join B 2', 'created' => self::date(), 'updated' => self::date())), 'JoinC' => array(array('id' => 1, 'join_c_id' => 2, 'other' => 'New data for Join A 1 Join C 2', 'created' => self::date(), 'updated' => self::date())));
     $TestModel->set($data);
     $TestModel->save();
     $result = $TestModel->findById(1);
     $expected = array('JoinA' => array('id' => 1, 'name' => 'New name for Join A 1', 'body' => 'Join A 1 Body', 'created' => '2008-01-03 10:54:23', 'updated' => self::date()), 'JoinB' => array(0 => array('id' => 2, 'name' => 'Join B 2', 'created' => '2008-01-03 10:55:02', 'updated' => '2008-01-03 10:55:02', 'JoinAsJoinB' => array('id' => 1, 'join_a_id' => 1, 'join_b_id' => 2, 'other' => 'New data for Join A 1 Join B 2', 'created' => self::date(), 'updated' => self::date()))), 'JoinC' => array(0 => array('id' => 2, 'name' => 'Join C 2', 'created' => '2008-01-03 10:56:12', 'updated' => '2008-01-03 10:56:12', 'JoinAsJoinC' => array('id' => 1, 'join_a_id' => 1, 'join_c_id' => 2, 'other' => 'New data for Join A 1 Join C 2', 'created' => self::date(), 'updated' => self::date()))));
     $this->assertEquals($expected, $result);
 }
Esempio n. 2
0
 /**
  * testSaveHabtm method
  *
  * @access public
  * @return void
  */
 function testSaveHabtm()
 {
     $this->loadFixtures('Article', 'User', 'Comment', 'Tag', 'ArticlesTag');
     $TestModel =& new Article();
     $result = $TestModel->findById(2);
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'Second Article', 'body' => 'Second Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'), 'User' => array('id' => '3', 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31'), 'Comment' => array(array('id' => '5', 'article_id' => '2', 'user_id' => '1', 'comment' => 'First Comment for Second Article', 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'), array('id' => '6', 'article_id' => '2', 'user_id' => '2', 'comment' => 'Second Comment for Second Article', 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31')), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Article' => array('id' => '2', 'title' => 'New Second Article'), 'Tag' => array('Tag' => array(1, 2)));
     $this->assertTrue($TestModel->set($data));
     $this->assertTrue($TestModel->save());
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')));
     $this->assertEqual($result, $expected);
     $data = array('Article' => array('id' => '2'), 'Tag' => array('Tag' => array(2, 3)));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(1, 2, 3)));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array()));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $data = array('Tag' => array('Tag' => ''));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array());
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(2, 3)));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(1, 2)), 'Article' => array('id' => '2', 'title' => 'New Second Article'));
     $this->assertTrue($TestModel->set($data));
     $this->assertTrue($TestModel->save());
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(1, 2)), 'Article' => array('id' => '2', 'title' => 'New Second Article Title'));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $this->assertTrue($TestModel->save());
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'New Second Article Title', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(2, 3)), 'Article' => array('id' => '2', 'title' => 'Changed Second Article'));
     $this->assertTrue($TestModel->set($data));
     $this->assertTrue($TestModel->save());
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'Changed Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Tag' => array('Tag' => array(1, 3)), 'Article' => array('id' => '2'));
     $result = $TestModel->set($data);
     $this->assertTrue($result);
     $result = $TestModel->save();
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
     $expected = array('Article' => array('id' => '2', 'user_id' => '3', 'title' => 'Changed Second Article', 'body' => 'Second Article Body'), 'Tag' => array(array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), array('id' => '3', 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $data = array('Article' => array('id' => 10, 'user_id' => '2', 'title' => 'New Article With Tags and fieldList', 'body' => 'New Article Body with Tags and fieldList', 'created' => '2007-03-18 14:55:23', 'updated' => '2007-03-18 14:57:31'), 'Tag' => array('Tag' => array(1, 2, 3)));
     $result = $TestModel->create() && $TestModel->save($data, true, array('user_id', 'title', 'published'));
     $this->assertTrue($result);
     $TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
     $result = $TestModel->read();
     $expected = array('Article' => array('id' => 4, 'user_id' => 2, 'title' => 'New Article With Tags and fieldList', 'body' => '', 'published' => 'N', 'created' => '', 'updated' => ''), 'Tag' => array(0 => array('id' => 1, 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'), 1 => array('id' => 2, 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31'), 2 => array('id' => 3, 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')));
     $this->assertEqual($result, $expected);
     $this->loadFixtures('JoinA', 'JoinC', 'JoinAC', 'JoinB', 'JoinAB');
     $TestModel = new JoinA();
     $TestModel->hasBelongsToMany['JoinC']['unique'] = true;
     $data = array('JoinA' => array('id' => 1, 'name' => 'Join A 1', 'body' => 'Join A 1 Body'), 'JoinC' => array('JoinC' => array(array('join_c_id' => 2, 'other' => 'new record'), array('join_c_id' => 3, 'other' => 'new record'))));
     $TestModel->save($data);
     $result = $TestModel->read(null, 1);
     $time = date('Y-M-D H:i:s');
     $expected = array(4, 5);
     $this->assertEqual(Set::extract('/JoinC/JoinAsJoinC/id', $result), $expected);
     $expected = array('new record', 'new record');
     $this->assertEqual(Set::extract('/JoinC/JoinAsJoinC/other', $result), $expected);
 }