| Current File : /home/jvzmxxx/wiki1/extensions/Flow/tests/phpunit/Handlebars/FlowPostMetaActionsTest.php |
<?php
namespace Flow\Tests\Handlebars;
use Flow\Container;
use LightnCandy;
use Symfony\Component\DomCrawler\Crawler;
/**
* @group Flow
*/
class FlowPostMetaActionsTest extends \MediaWikiTestCase {
/**
* The specific timestamps used inside are not anything
* in particular, they just match the post and last edit
* uuid's we use in the test.
*/
public function timestampEditedProvider() {
return array(
array(
'never been edited',
// expected
'02:52, 1 October 2014',
// args
array(
'isOriginalContent' => true,
'author' => 'creator',
'creator' => 'creator',
'lastEditUser' => null,
),
),
array(
'last edited by post creator',
// expected
'Edited 04:21, 9 October 2014',
// args
array(
'isOriginalContent' => false,
'author' => 'creator',
'creator' => 'creator',
'lastEditUser' => 'creator',
),
),
array(
'last edited by other than post creator',
// expected
'Edited by author 04:21, 9 October 2014',
// args
array(
'isOriginalContent' => false,
'author' => 'author',
'creator' => 'creator',
'lastEditUser' => 'author',
),
),
array(
'most recent revision not a content edit',
// expected
'Edited 04:21, 9 October 2014',
// args
array(
'isOriginalContent' => false,
'author' => 'author',
'creator' => 'creator',
'lastEditUser' => 'creator',
),
),
);
}
/**
* @dataProvider timestampEditedProvider
*/
public function testTimestampEdited( $message, $expect, $args ) {
if ( !class_exists( 'Symfony\Component\DomCrawler\Crawler' ) ) {
$this->markTestSkipped( 'DomCrawler component is not available.' );
return;
}
$crawler = $this->renderTemplate(
'flow_post_meta_actions.partial',
array(
'actions' => array(),
'postId' => 's3chebds95i0atkw',
'lastEditId' => 's3ufwcms95i0atkw',
'isOriginalContent' => $args['isOriginalContent'],
'author' => array(
'name' => $args['author'],
),
'creator' => array(
'name' => $args['creator'],
),
'lastEditUser' => array(
'name' => $args['lastEditUser'],
),
)
);
$text = $crawler->filter( '.flow-post-timestamp' )->text();
// normalize whitespace
$text = trim( preg_replace( '/\s+/', ' ', $text ) );
$this->assertStringStartsWith( $expect, $text, $message );
}
protected function renderTemplate( $templateName, array $args = array() ) {
$lc = Container::get( 'lightncandy' );
$filenames = $lc->getTemplateFilenames( $templateName );
$phpCode = $lc::compile(
file_get_contents( $filenames['template'] ),
Container::get( 'lightncandy.template_dir' )
);
$renderer = LightnCandy::prepare( $phpCode );
return new Crawler( $renderer( $args ) );
}
}