/update/dev/tests/integration/testsuite/Magento/Update/StatusCheckTest.php
PHP | 108 lines | 65 code | 12 blank | 31 comment | 1 complexity | 1c674e38b2a2164572ce6af52fe35e7a MD5 | raw file
- <?php
- /**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Update;
- class StatusCheckTest extends \PHPUnit_Framework_TestCase
- {
- const REQUEST_TYPE_AJAX = 'ajax';
- /**
- * @var string
- */
- protected $indexScript;
- /**
- * @var \Magento\Update\Status
- */
- protected $status;
- /**
- * @var string
- */
- protected $uniqueMessage;
- protected function setUp()
- {
- $this->indexScript = UPDATER_BP . '/index.php';
- $this->status = new \Magento\Update\Status();
- $this->status->clear();
- $this->uniqueMessage = 'Test Message' . uniqid();
- }
- protected function tearDown()
- {
- $this->status->clear();
- unset($this->uniqueMessage);
- }
- /**
- * @param bool $isInProgress
- * @param string $statusMessage
- * @dataProvider progressStatusDataProvider
- */
- public function testStatusCheck($isInProgress, $statusMessage)
- {
- $this->status->add($this->uniqueMessage);
- $this->status->setUpdateInProgress($isInProgress);
- $actualResponse = $this->getResponse();
- $this->assertContains($this->uniqueMessage, $actualResponse);
- $this->assertContains($statusMessage, $actualResponse);
- }
- /**
- * @param bool $isInProgress
- * @dataProvider progressStatusDataProvider
- */
- public function testStatusCheckAjax($isInProgress)
- {
- $this->status->add($this->uniqueMessage);
- $this->status->setUpdateInProgress($isInProgress);
- $actualResponse = json_decode($this->getResponse(self::REQUEST_TYPE_AJAX), true);
- $this->assertInternalType('array', $actualResponse);
- $this->assertArrayHasKey('statusMessage', $actualResponse);
- $this->assertArrayHasKey('isUpdateInProgress', $actualResponse);
- $this->assertContains($this->uniqueMessage, $actualResponse['statusMessage']);
- $this->assertEquals($isInProgress, $actualResponse['isUpdateInProgress']);
- }
- /**
- * @return array
- */
- public function progressStatusDataProvider()
- {
- return [
- 'isRunning' => [
- 'isInProgress' => true,
- 'statusMessage' => 'Update application is running'
- ],
- 'isNotRunning' => [
- 'isInProgress' => false,
- 'statusMessage' => 'Update application is not running'
- ],
- ];
- }
- /**
- * Return response of index.php, according to the request type
- *
- * @param string|null $requestType
- * @return string
- */
- protected function getResponse($requestType = null)
- {
- if ($requestType === self::REQUEST_TYPE_AJAX) {
- $_SERVER['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest';
- }
- ob_start();
- include $this->indexScript;
- $response = ob_get_contents();
- ob_end_clean();
- unset($_SERVER['HTTP_X_REQUESTED_WITH']);
- return $response;
- }
- }