public function testGetStringifiedData()
 {
     $i = new I();
     $i->iMember = 'a';
     $k = new K();
     $k->kMember = 'kA1';
     $i->ks->add($k);
     $this->assertTrue($i->save());
     $content = $i->ks->getStringifiedData();
     $this->assertEquals(array('kA1'), $content);
     $iId = $i->id;
     $i->forget();
     unset($i);
     $i = I::getById($iId);
     $content = $i->ks->getStringifiedData();
     $this->assertEquals(array('kA1'), $content);
     $k = new K();
     $k->kMember = 'kA2';
     $i->ks->add($k);
     $k = new K();
     $k->kMember = 'kA3';
     $i->ks->add($k);
     $this->assertTrue($i->save());
     $content = $i->ks->getStringifiedData();
     $this->assertEquals(array('kA1', 'kA2', 'kA3'), $content);
 }
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     $i = new I();
     $i->iMember = 'iString1';
     $i->name = 'd';
     assert($i->save());
     // Not Coding Standard
     $i = new I();
     $i->iMember = 'xString1';
     $i->name = 'e';
     assert($i->save());
     // Not Coding Standard
     $i = new I();
     $i->iMember = 'yString1';
     $i->name = 'f';
     assert($i->save());
     // Not Coding Standard
     $j = new J();
     $j->jMember = 'jString1';
     $j->name = 'a';
     assert($j->save());
     // Not Coding Standard
     $j = new J();
     $j->jMember = 'xString1';
     $j->name = 'b';
     assert($j->save());
     // Not Coding Standard
     $j = new J();
     $j->jMember = 'yString1';
     $j->name = 'c';
     assert($j->save());
     // Not Coding Standard
     $k = new K();
     $k->kMember = 'kString1';
     $k->name = 'g';
     assert($k->save());
     // Not Coding Standard
     $k = new K();
     $k->kMember = 'xString1';
     $k->name = 'i';
     assert($k->save());
     // Not Coding Standard
     $k = new K();
     $k->kMember = 'yString1';
     $k->name = 'h';
     assert($k->save());
     // Not Coding Standard
 }
 public function testChangingBelongsToSideOfHasManyRelation()
 {
     $k1 = new K();
     $k2 = new K();
     $i = new I();
     $i->ks->add($k1);
     $i->ks->add($k2);
     $this->assertTrue($i->save());
     $this->assertEquals(2, $i->ks->count());
     $k1->i = null;
     $this->assertTrue($k1->save());
     $iId = $i->id;
     $i->forget();
     unset($i);
     $i = I::getById($iId);
     $this->assertEquals(1, $i->ks->count());
     $i->ks->removeByIndex(0);
     $this->assertTrue($i->save());
     $this->assertEquals(0, $i->ks->count());
     $k2Id = $k2->id;
     $k2->forget();
     unset($k2);
     $k2 = K::getById($k2Id);
     $this->assertTrue($k2->i->id < 0);
 }
 /**
  * @depends testHasManyRelationSqlQuery
  */
 public function testManyManyRelationSqlQuery()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     //I has many ls.
     $i = new I();
     $l = new L();
     $l->lMember = 'def';
     $this->assertTrue($l->save());
     $i->iMember = 'abc';
     $i->ls->add($l);
     $this->assertTrue($i->save());
     $searchAttributeData = array();
     $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'ls', 'relatedAttributeName' => 'lMember', 'operatorType' => 'equals', 'value' => 'somevalue'));
     $searchAttributeData['structure'] = '1';
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('I');
     $quote = DatabaseCompatibilityUtil::getQuote();
     $where = RedBeanModelDataProvider::makeWhere('I', $searchAttributeData, $joinTablesAdapter);
     $compareWhere = "({$quote}l{$quote}.{$quote}lmember{$quote} = 'somevalue')";
     $this->assertEquals($compareWhere, $where);
     //Now test that the joinTablesAdapter has correct information.
     $this->assertEquals(0, $joinTablesAdapter->getFromTableJoinCount());
     $this->assertEquals(2, $joinTablesAdapter->getLeftTableJoinCount());
     $leftTables = $joinTablesAdapter->getLeftTablesAndAliases();
     $this->assertEquals('i_l', $leftTables[0]['tableName']);
     $this->assertEquals('l', $leftTables[1]['tableName']);
     //Now test that the subsetSQL query produced is correct.
     $subsetSql = I::makeSubsetOrCountSqlQuery('i', $joinTablesAdapter, 1, 5, $where, null, false, $joinTablesAdapter->getSelectDistinct());
     $compareSubsetSql = "select distinct {$quote}i{$quote}.{$quote}id{$quote} id ";
     $compareSubsetSql .= "from {$quote}i{$quote} ";
     $compareSubsetSql .= "left join {$quote}i_l{$quote} on ";
     $compareSubsetSql .= "{$quote}i_l{$quote}.{$quote}i_id{$quote} = {$quote}i{$quote}.{$quote}id{$quote} ";
     $compareSubsetSql .= "left join {$quote}l{$quote} on ";
     $compareSubsetSql .= "{$quote}l{$quote}.{$quote}id{$quote} = {$quote}i_l{$quote}.{$quote}l_id{$quote} ";
     $compareSubsetSql .= "where " . $compareWhere . ' ';
     $compareSubsetSql .= 'limit 5 offset 1';
     $this->assertEquals($compareSubsetSql, $subsetSql);
     //Make sure the sql runs properly.
     $dataProvider = new RedBeanModelDataProvider('I', null, false, $searchAttributeData);
     $data = $dataProvider->getData();
 }