Current File : /home/jvzmxxx/wiki1/extensions/Flow/tests/phpunit/Data/UserNameBatchTest.php
<?php

namespace Flow\Tests\Data;

use Flow\Repository\UserNameBatch;
use Flow\Repository\UserName\UserNameQuery;
use Flow\Tests\FlowTestCase;

/**
 * @group Database
 * @group Flow
 */
class UserNameBatchTest extends FlowTestCase {

	public function testAllowsAddingNames() {
		$batch = new UserNameBatch( $this->createUncalledQuery() );
		$batch->add( 'fakewiki', 42, 'Whale' );
		$this->assertEquals( 'Whale', $batch->get( 'fakewiki', 42 ) );
	}

	static public function acceptsStringOrIntIdsProvider() {
		return array(
			array( 42, 42 ),
			array( 42, '42' ),
			array( '42', 42 ),
			array( '42', '42' ),
		);
	}

	/**
	 * @dataProvider acceptsStringOrIntIdsProvider
	 */
	public function testAcceptsStringOrIntIds( $a, $b ) {
		$batch = new UserNameBatch( $this->createUncalledQuery() );
		$batch->add( 'fakewiki', $a, 'Whale' );
		$this->assertEquals( 'Whale', $batch->get( 'fakewiki', $b ) );
	}

	public function testQueueUsernames() {
		$query = $this->getMock( 'Flow\Repository\UserName\UserNameQuery' );
		$query->expects( $this->once() )
			->method( 'execute' )
			->with( 'fakewiki', array( 12, 27, 18 ) );

		$batch = new UserNameBatch( $query );
		$batch->add( 'fakewiki', 12 );
		$batch->add( 'fakewiki', '27' );
		$batch->add( 'fakewiki', 18 );
		$batch->resolve( 'fakewiki' );
	}

	public function testMissingAsFalse() {
		$query = $this->getMock( 'Flow\Repository\UserName\UserNameQuery' );
		$query->expects( $this->once() )
			->method( 'execute' )
			->with( 'fakewiki', array( 42 ) );
		$batch = new UserNameBatch( $query );

		$this->assertEquals( false, $batch->get( 'fakewiki', 42 ) );
	}

	public function testPartialMissingAsFalse() {
		$query = $this->getMock( 'Flow\Repository\UserName\\UserNameQuery' );
		$query->expects( $this->once() )
			->method( 'execute' )
			->with( 'fakewiki', array( 610, 408 ) )
			->will( $this->returnValue( array(
				(object)array( 'user_id' => '408', 'user_name' => 'chuck' )
			) ) );

		$batch = new UserNameBatch( $query );
		$batch->add( 'fakewiki', 610 );
		$batch->add( 'fakewiki', 408 );

		$this->assertEquals( false, $batch->get( 'fakewiki', 610 ) );
	}

	/**
	 * Create a mock UserNameQuery that must not be called
	 * @return UserNameQuery
	 */
	protected function createUncalledQuery() {
		$query = $this->getMock( 'Flow\Repository\UserName\UserNameQuery' );
		$query->expects( $this->never() )
			->method( 'execute' );

		return $query;
	}
}