123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Module\Test\Unit;
- use Magento\Framework\Module\DbVersionInfo;
- class DbVersionInfoTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var DbVersionInfo
- */
- private $dbVersionInfo;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- private $moduleList;
- /**
- * @var \Magento\Framework\Module\ResourceInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $moduleResource;
- /**
- * @var \Magento\Framework\Module\Output\ConfigInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $_outputConfig;
- protected function setUp()
- {
- $this->moduleList = $this->getMockForAbstractClass(\Magento\Framework\Module\ModuleListInterface::class);
- $this->moduleList->expects($this->any())
- ->method('getOne')
- ->will($this->returnValueMap([
- ['Module_One', ['name' => 'Module_One', 'setup_version' => '1']],
- ['Module_Two', ['name' => 'Module_Two', 'setup_version' => '2']],
- ['Module_No_Schema', []],
- ]));
- $this->moduleList->expects($this->any())
- ->method('getNames')
- ->will($this->returnValue(['Module_One', 'Module_Two']));
- $this->_outputConfig = $this->getMockForAbstractClass(\Magento\Framework\Module\Output\ConfigInterface::class);
- $this->moduleResource = $this->getMockForAbstractClass(\Magento\Framework\Module\ResourceInterface::class);
- $this->dbVersionInfo = new DbVersionInfo(
- $this->moduleList,
- $this->moduleResource
- );
- }
- /**
- * @param string $moduleName
- * @param string|bool $dbVersion
- * @param bool $expectedResult
- *
- * @dataProvider isDbUpToDateDataProvider
- */
- public function testIsDbSchemaUpToDate($moduleName, $dbVersion, $expectedResult)
- {
- $this->moduleResource->expects($this->once())
- ->method('getDbVersion')
- ->with($moduleName)
- ->will($this->returnValue($dbVersion));
- $this->moduleList->expects(self::once())
- ->method('getOne')
- ->with($moduleName)
- ->willReturn(
- ['setup_version' => $dbVersion]
- );
- $this->assertEquals(
- $expectedResult,
- $this->dbVersionInfo->isSchemaUpToDate($moduleName)
- );
- }
- /**
- * @param string $moduleName
- * @param string|bool $dbVersion
- * @param bool $expectedResult
- *
- * @dataProvider isDbUpToDateDataProvider
- */
- public function testIsDbDataUpToDate($moduleName, $dbVersion, $expectedResult)
- {
- $this->moduleResource->expects($this->once())
- ->method('getDataVersion')
- ->with($moduleName)
- ->will($this->returnValue($dbVersion));
- $this->moduleList->expects(self::once())
- ->method('getOne')
- ->with($moduleName)
- ->willReturn(
- ['setup_version' => $dbVersion]
- );
- $this->assertEquals(
- $expectedResult,
- $this->dbVersionInfo->isDataUpToDate($moduleName)
- );
- }
- /**
- * @return array
- */
- public function isDbUpToDateDataProvider()
- {
- return [
- 'version in config == version in db' => ['Module_One', '1', true],
- 'version in config < version in db' => [
- 'Module_One',
- '2',
- false
- ],
- 'version in config > version in db' => [
- 'Module_Two',
- '1',
- false
- ],
- 'no version in db' => [
- 'Module_One',
- false,
- false
- ],
- ];
- }
- public function testGetDbVersionErrors()
- {
- $this->moduleResource->expects($this->any())
- ->method('getDataVersion')
- ->will($this->returnValue(2));
- $this->moduleResource->expects($this->any())
- ->method('getDbVersion')
- ->will($this->returnValue(2));
- $expectedErrors = [
- [
- DbVersionInfo::KEY_MODULE => 'Module_One',
- DbVersionInfo::KEY_CURRENT => '2',
- DbVersionInfo::KEY_REQUIRED => '1',
- DbVersionInfo::KEY_TYPE => 'schema',
- ],
- [
- DbVersionInfo::KEY_MODULE => 'Module_One',
- DbVersionInfo::KEY_CURRENT => '2',
- DbVersionInfo::KEY_REQUIRED => '1',
- DbVersionInfo::KEY_TYPE => 'data',
- ]
- ];
- $this->assertEquals($expectedErrors, $this->dbVersionInfo->getDbVersionErrors());
- }
- /**
- * Test is DB schema up to date for module with no schema
- */
- public function testIsDbSchemaUpToDateException()
- {
- $this->assertTrue($this->dbVersionInfo->isSchemaUpToDate('Module_No_Schema'));
- }
- /**
- * Test is DB Data up to date for module with no schema
- */
- public function testIsDbDataUpToDateException()
- {
- $this->assertTrue($this->dbVersionInfo->isDataUpToDate('Module_No_Schema'));
- }
- }
|