/**
  * @covers WFormRelation::getInstance
  */
 public function testGetInstance()
 {
     $model = $this->getModelMock();
     $model->expects($this->any())->method('setOptions');
     $options = array('required' => true, 'type' => 'someUnexpectedType');
     // for 'relations' => array('someRelation' => array(..options..))
     $this->assertInstanceOf('WFormRelationHasOne', WFormRelation::getInstance($model, 'hasOne', $options));
     $this->assertInstanceOf('WFormRelationHasMany', WFormRelation::getInstance($model, 'hasMany', $options));
     $this->assertInstanceOf('WFormRelationManyMany', WFormRelation::getInstance($model, 'manyMany', $options));
     $this->assertInstanceOf('WFormRelationBelongsTo', WFormRelation::getInstance($model, 'belongsTo', $options));
     $this->assertNull(WFormRelation::getInstance($model, 'stat', $options));
     $this->assertNull(WFormRelation::getInstance($model, 'misteriousRelation', $options));
     // for 'relations' => array('someRelation','someOtherRelation')
     $this->assertInstanceOf('WFormRelationHasOne', WFormRelation::getInstance($model, 0, 'hasOne'));
     $this->assertInstanceOf('WFormRelationHasMany', WFormRelation::getInstance($model, 1, 'hasMany'));
     $this->assertInstanceOf('WFormRelationManyMany', WFormRelation::getInstance($model, 2, 'manyMany'));
     $this->assertInstanceOf('WFormRelationBelongsTo', WFormRelation::getInstance($model, 3, 'belongsTo'));
     $this->assertNull(WFormRelation::getInstance($model, 4, 'stat'));
     $this->assertNull(WFormRelation::getInstance($model, 5, 'misteriousRelation'));
     $relation = WFormRelation::getInstance($model, 'hasOne', $options);
     $this->assertAttributeNotEmpty('name', $relation);
     $this->assertAttributeNotEmpty('info', $relation);
     $this->assertAttributeNotEmpty('type', $relation);
     $this->assertAttributeNotEmpty('model', $relation);
 }
 /**
  * @covers WFormRelationHasMany::getActualRelatedModels
  */
 public function testGetActualRelatedModels()
 {
     $product = $this->_getProductWithRelation(1);
     $relation = WFormRelation::getInstance($product, 'images');
     $this->assertCount(1, $relation->getRelatedModels());
     $this->assertCount(1, $relation->getActualRelatedModels());
     $product->attributes = array('name' => 'name', 'images' => array());
     $this->assertCount(1, $relation->getActualRelatedModels());
     $this->assertCount(0, $relation->getRelatedModels());
     $product->attributes = array('name' => 'name', 'images' => array(array('file' => 'newfile1.txt'), array('file' => 'newfile2.txt')));
     $this->assertCount(2, $relation->getRelatedModels());
     $this->assertCount(1, $relation->getActualRelatedModels());
 }
 /**
  * @covers WFormRelationHasOne::getActualRelatedModel
  */
 public function testGetActualRelatedModel()
 {
     $product = $this->_getProductWithRelation(1, array('required' => false));
     $relation = WFormRelation::getInstance($product, 'description', array('required' => false));
     $this->assertNotEmpty($relation->getRelatedModel(false));
     $this->assertNotEmpty($relation->getActualRelatedModel());
     $product->attributes = array('name' => 'name', 'description' => null);
     $this->assertNotEmpty($relation->getActualRelatedModel());
     $this->assertEmpty($relation->getRelatedModel(false));
     $product->attributes = array('name' => 'name', 'description' => array('size' => '10'));
     $this->assertNotEmpty($relation->getActualRelatedModel());
     $this->assertNotEmpty($relation->getRelatedModel(false));
 }
Beispiel #4
0
 /**
  * Rebuild related models
  *
  * @param $parentModel
  * @return void
  */
 protected function _buildRelatedModel($parentModel)
 {
     $this->relatedModels = array();
     if (is_null($this->relations)) {
         $this->relations = array_keys($parentModel->relations());
     }
     foreach ($this->relations as $index => $options) {
         $relation = $index;
         if (is_numeric($index)) {
             $relation = $options;
             $options = array();
         }
         if (($relationModel = WFormRelation::getInstance($parentModel, $relation, $options)) !== null) {
             $this->relatedModels[$relation] = $relationModel;
             $this->relatedModels[$relation]->setPreloaded(in_array($relation, self::$preloadedRelations));
         } else {
             unset($this->relations[$index]);
         }
     }
 }
 /**
  * @covers WFormRelationHasMany::getRelatedModel
  */
 public function testGetRelatedModel()
 {
     $product = $this->_getProductWithRelation();
     $relation = WFormRelation::getInstance($product, 'category');
     $this->assertEmpty($relation->getRelatedModel(false));
     //		$this->assertNotEmpty($relation->getRelatedModel(true));
     $product->attributes = array('name' => 'product_name', 'category' => array('id' => 1, 'name' => '10'));
     $this->assertNotEmpty($relation->getRelatedModel());
     $product = $this->_getProductWithRelation(1);
     $relation = WFormRelation::getInstance($product, 'category');
     $this->assertNotEmpty($relation->getRelatedModel());
 }