Skip to content

Commit

Permalink
Merge pull request nextcloud#3684 from nextcloud/run-lang-update-only…
Browse files Browse the repository at this point in the history
…-once

Execute UpdateLanguageCode only once
  • Loading branch information
rullzer authored Mar 3, 2017
2 parents f8c459f + 0beb785 commit 8e27b81
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/private/Repair.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public static function getRepairSteps() {
\OC::$server->getConfig()
),
new FixMountStorages(\OC::$server->getDatabaseConnection()),
new UpdateLanguageCodes(\OC::$server->getDatabaseConnection()),
new UpdateLanguageCodes(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
];
}

Expand Down
18 changes: 16 additions & 2 deletions lib/private/Repair/NC12/UpdateLanguageCodes.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

namespace OC\Repair\NC12;

use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
Expand All @@ -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;
}

/**
Expand All @@ -49,6 +56,13 @@ public function getName() {
* {@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',
Expand Down
28 changes: 27 additions & 1 deletion tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
namespace Test\Repair\NC12;

use OC\Repair\NC12\UpdateLanguageCodes;
use OCP\IConfig;
use OCP\Migration\IOutput;
use Test\TestCase;

Expand All @@ -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() {
Expand Down Expand Up @@ -112,8 +117,13 @@ public function testRun() {
->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
Expand Down Expand Up @@ -147,4 +157,20 @@ public function testRun() {
}
}

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);
}

}

0 comments on commit 8e27b81

Please sign in to comment.