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