executed_actions = 0; } /** * @return Arlima_List */ private function createList($num_articles = 3) { $article_collection = array(); for($i = 1; $i <= $num_articles; $i++) { $article_collection[] = Arlima_ListFactory::createArticleDataArray(array('title' => 'article'.$i)); } $list = new Arlima_List(true, 99); $list->setArticles( $article_collection ); return $list; } /** * @var Arlima_List */ private $list; private $executed_actions=0; function testActionArguments() { $this->list = $this->createList(1); add_action('arlima_article_begin', array($this, 'checkArgs')); add_action('arlima_article_end', array($this, 'checkArgs')); add_action('arlima_article_content', array($this, 'checkArgs')); add_action('arlima_article_image', array($this, 'checkArgs')); arlima_render_list($this->list, array('echo' => false)); $this->assertEquals(4, $this->executed_actions); } function testActionArgumentsForCustomActions() { $this->list = $this->createList(1); $my = 'my-actions'; add_action('arlima_article_begin-'.$my, array($this, 'checkArgs')); add_action('arlima_article_end-'.$my, array($this, 'checkArgs')); add_action('arlima_article_content-'.$my, array($this, 'checkArgs')); add_action('arlima_article_image-'.$my, array($this, 'checkArgs')); arlima_render_list($this->list, array('echo' => false, 'filter_suffix'=>$my)); $this->assertEquals(4, $this->executed_actions); } function checkArgs($args) { $this->executed_actions++; $this->assertEquals($this->list, $args['list']); $this->assertEquals(0, $args['count']); $this->assertTrue( isset($args['post']) ); $this->assertTrue( !empty($args['article']) ); } function testArticleCount() { $list = $this->createList(3); add_action('arlima_article_begin', array($this, 'checkArticleCount')); arlima_render_list($list, array('echo'=>false)); } function checkArticleCount($args) { $this->assertEquals($this->executed_actions, $args['count']); $this->executed_actions++; } function testSomeFilters() { $list = $this->createList(1); $list->setOption('template', 'some-template'); $renderer = new Arlima_ListTemplateRenderer($list, __DIR__.'/test-templates/'); add_action('arlima_article_begin', function($data) { $data['content'] = 'BEGIN'; return $data; }); add_action('arlima_article_end', function($data) { $data['content'] = 'END'; return $data; }); add_action('arlima_article_content', function($data) { $data['content'] = 'CONTENT'; return $data; }); $content = arlima_render_list($renderer, array('echo'=>false)); $this->assertEquals('hello BEGIN CONTENT END', $content); } }