Merge pull request #3684 from nextcloud/run-lang-update-only-once

Execute UpdateLanguageCode only once
This commit is contained in:
Roeland Jago Douma 2017-03-03 13:51:32 +01:00 committed by GitHub
commit 8e27b8197d
3 changed files with 44 additions and 4 deletions

View File

@ -135,7 +135,7 @@ class Repair implements IOutput{
\OC::$server->getConfig()
),
new FixMountStorages(\OC::$server->getDatabaseConnection()),
new UpdateLanguageCodes(\OC::$server->getDatabaseConnection()),
new UpdateLanguageCodes(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
];
}

View File

@ -23,6 +23,7 @@
namespace OC\Repair\NC12;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
@ -31,11 +32,17 @@ class UpdateLanguageCodes implements IRepairStep {
/** @var IDBConnection */
private $connection;
/** @var IConfig */
private $config;
/**
* @param IDBConnection $db
* @param IDBConnection $connection
* @param IConfig $config
*/
public function __construct(IDBConnection $connection) {
public function __construct(IDBConnection $connection,
IConfig $config) {
$this->connection = $connection;
$this->config = $config;
}
/**
@ -49,6 +56,13 @@ class UpdateLanguageCodes implements IRepairStep {
* {@inheritdoc}
*/
public function run(IOutput $output) {
$versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
if (version_compare($versionFromBeforeUpdate, '12.0.0.13', '>')) {
return;
}
$languages = [
'bg_BG' => 'bg',
'cs_CZ' => 'cs',

View File

@ -24,6 +24,7 @@
namespace Test\Repair\NC12;
use OC\Repair\NC12\UpdateLanguageCodes;
use OCP\IConfig;
use OCP\Migration\IOutput;
use Test\TestCase;
@ -38,10 +39,14 @@ class UpdateLanguageCodesTest extends TestCase {
/** @var \OCP\IDBConnection */
protected $connection;
/** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
private $config;
protected function setUp() {
parent::setUp();
$this->connection = \OC::$server->getDatabaseConnection();
$this->config = $this->createMock(IConfig::class);
}
public function testRun() {
@ -112,8 +117,13 @@ class UpdateLanguageCodesTest extends TestCase {
->method('info')
->with('Changed 2 setting(s) from "th_TH" to "th" in preferences table.');
$this->config->expects($this->once())
->method('getSystemValue')
->with('version', '0.0.0')
->willReturn('12.0.0.13');
// run repair step
$repair = new UpdateLanguageCodes($this->connection);
$repair = new UpdateLanguageCodes($this->connection, $this->config);
$repair->run($outputMock);
// check if test data is correctly modified in DB
@ -147,4 +157,20 @@ class UpdateLanguageCodesTest extends TestCase {
}
}
public function testSecondRun() {
/** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
$outputMock = $this->createMock(IOutput::class);
$outputMock->expects($this->never())
->method('info');
$this->config->expects($this->once())
->method('getSystemValue')
->with('version', '0.0.0')
->willReturn('12.0.0.14');
// run repair step
$repair = new UpdateLanguageCodes($this->connection, $this->config);
$repair->run($outputMock);
}
}