Execute UpdateLanguageCode only once

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Morris Jobke 2017-03-02 12:12:19 -06:00
parent 53195b156c
commit 0b12eb0640
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A
2 changed files with 39 additions and 2 deletions

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,16 @@ class UpdateLanguageCodes implements IRepairStep {
/** @var IDBConnection */
private $connection;
/** @var IConfig */
private $config;
/**
* @param IDBConnection $db
*/
public function __construct(IDBConnection $connection) {
public function __construct(IDBConnection $connection,
IConfig $config) {
$this->connection = $connection;
$this->config = $config;
}
/**
@ -49,6 +55,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,18 @@ class UpdateLanguageCodesTest extends TestCase {
}
}
public function testSecondRun() {
/** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
$outputMock = $this->createMock(IOutput::class);
$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);
}
}