namespace OC\Repair\NC12;
+use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\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;
}
/**
* {@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',
namespace Test\Repair\NC12;
use OC\Repair\NC12\UpdateLanguageCodes;
+use OCP\IConfig;
use OCP\Migration\IOutput;
use Test\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() {
->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
}
}
+ 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);
+ }
+
}