Current File : /home/jvzmxxx/wiki1/extensions/MobileFrontend/tests/phpunit/devices/AMFDeviceDetectorTest.php
<?php

namespace Tests\MobileFrontend\Devices;

use MediaWikiTestCase;
use WebRequest;
use MobileFrontend\Devices\AMFDeviceDetector;

/**
 * @group MobileFrontend
 */
class AMFDeviceDetectorTest extends MediaWikiTestCase {

	/**
	 * @var WebRequest
	 */
	private $request;

	/**
	 * @var AMFDeviceDetector
	 */
	private $detector;

	protected function setUp() {
		parent::setUp();

		$this->request = new WebRequest();
		$this->detector = new AMFDeviceDetector();
	}

	/**
	 * @dataProvider provideIsMobileDevice
	 */
	public function testIsMobileDevice( $server, $expectedIsMobileDevice ) {
		$isMobileDevice =
			$this->detector->detectDeviceProperties( $this->request, $server )
				->isMobileDevice();

		$this->assertEquals( $expectedIsMobileDevice, $isMobileDevice );
	}

	public static function provideIsMobileDevice() {
		return [
			[
				[ 'AMF_DEVICE_IS_MOBILE' => 'true' ],
				true,
			],
			[
				[ 'AMF_DEVICE_IS_MOBILE' => 'false' ],
				false,
			],
		];
	}

	/**
	 * @dataProvider provideIsTabletDevice
	 */
	public function testIsTabletDevice( $server, $expectedIsTabletDevice ) {
		$isTabletDevice =
			$this->detector->detectDeviceProperties( $this->request, $server )
				->isTabletDevice();

		$this->assertEquals( $expectedIsTabletDevice, $isTabletDevice );
	}

	public static function provideIsTabletDevice() {
		return [
			[
				[ 'AMF_DEVICE_IS_TABLET' => 'true' ],
				true,
			],
			[
				[ 'AMF_DEVICE_IS_TABLET' => 'false' ],
				false,
			],
		];
	}

	public function test_it_should_handle_no_AMF_environment_variables() {
		$this->assertNull(
			$this->detector->detectDeviceProperties( $this->request, [] )
		);
	}
}