public function test_collect_children() { $model = Jam::find('test_blog', 1); $collected = Jam_Behavior_Cascade::collect_models($model, array('test_posts')); $this->assertEquals((string) $model, (string) $collected[0]); foreach ($model->test_posts as $i => $post) { $this->assertEquals((string) $post, (string) $collected[$i + 1]); } $collected = Jam_Behavior_Cascade::collect_models($model, array('test_posts' => array('test_author', 'test_tags', 'test_images'))); $expected = array($model, $model->test_posts[0], $model->test_posts[0]->test_author, $model->test_posts[0]->test_tags[0], $model->test_posts[0]->test_tags[1], $model->test_posts[0]->test_tags[2], $model->test_posts[0]->test_tags[3], $model->test_posts[0]->test_tags[4], $model->test_posts[0]->test_images[0]); foreach ($expected as $i => $item) { $this->assertEquals((string) $item, (string) $collected[$i], 'Collection item ' . $i . ' must be "' . $item . '"'); } }
public function execute(Jam_Model $model) { foreach ($this->callbacks() as $method => $model_names) { $children = Jam_Behavior_Cascade::get_current_children($model->meta()->model(), $model_names); $models = Jam_Behavior_Cascade::collect_models($model, (array) $children); call_user_func($method, $model, $models); } }