summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorVictor Dubiniuk <victor.dubiniuk@gmail.com>2016-03-29 16:57:41 +0300
committerJoas Schilling <nickvergessen@owncloud.com>2016-04-06 15:34:16 +0200
commitb87b27cbd94275895fd9da3f29edced27cd5aaad (patch)
tree3a4b57968928b219bef50645fc883083055b9eb1 /tests
parentcfd8cc3fd8382038a556ea729bb7c9beb09e4765 (diff)
downloadnextcloud-server-b87b27cbd94275895fd9da3f29edced27cd5aaad.tar.gz
nextcloud-server-b87b27cbd94275895fd9da3f29edced27cd5aaad.zip
Show hint in CLI
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/releasenotes.php129
-rw-r--r--tests/lib/releasenotestest.php119
2 files changed, 119 insertions, 129 deletions
diff --git a/tests/lib/releasenotes.php b/tests/lib/releasenotes.php
deleted file mode 100644
index ca2c3db66fb..00000000000
--- a/tests/lib/releasenotes.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/**
- * @author Victor Dubiniuk <dubiniuk@owncloud.com>
- *
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-class Test_ReleaseNotes extends \Test\TestCase {
- protected $prefix = 'ocx_';
-
- protected function setUp() {
- parent::setUp();
- }
-
- protected function tearDown() {
- $this->expected = [];
- parent::tearDown();
- }
-
- public function resultProvider82to90(){
- $l10n = \OC::$server->getL10N('core');
- $alterTableMessage = $l10n->t(
- "Hint: You can speed up the upgrade by executing this SQL command manually: ALTER TABLE %s ADD COLUMN checksum varchar(255) DEFAULT NULL AFTER permissions;",
- ['ocx_filecache']
- );
- $useCliMessage = $l10n->t(
- "You have an ownCloud installation with over 200.000 files so the upgrade might take a while. The recommendation is to use the command-line instead of the web interface for big ownCloud servers."
- );
- return [
- [ [], false, false, 20 ],
- [ [], false, true, 20 ],
- [ [], true, false, 20 ],
- [ [], true, true, 20 ],
- [ [ $useCliMessage ], false, false, 1000000 ],
- [ [], false, true, 1000000 ],
- [ [ $useCliMessage, $alterTableMessage ], true, false, 1000000 ],
- [ [ $alterTableMessage ], true, true, 1000000 ],
- ];
- }
-
- /**
- * @dataProvider resultProvider82to90
- */
- public function test82to90($expected, $isMysql, $isCliMode, $fileCount){
- $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $isCliMode, $fileCount);
- $actual = $releaseNotesMock->getReleaseNotes('8.2.22', '9.0.1');
- $this->assertEquals($expected, $actual);
- }
-
-
-
- public function resultProvider90to91(){
- return [
- [ [], false, false, 20 ],
- [ [], false, true, 20 ],
- [ [], true, false, 20 ],
- [ [], true, true, 20 ],
- [ [], false, false, 1000000 ],
- [ [], false, true, 1000000 ],
- [ [], true, false, 1000000 ],
- [ [], true, true, 1000000 ],
- ];
- }
-
- /**
- * @dataProvider resultProvider90to91
- */
- public function test90to91($expected, $isMysql, $isCliMode, $fileCount){
- $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $isCliMode, $fileCount);
- $actual = $releaseNotesMock->getReleaseNotes('9.0.1', '9.1.0');
- $this->assertEquals($expected, $actual);
- }
-
-
- private function getReleaseNotesMock($isMysql, $isCliMode, $fileCount){
- $dbConnectionMock = $this->getMockBuilder('OCP\IDBConnection')
- ->setMethods(array_merge($this->getMethods('OCP\IDBConnection'), ['getPrefix']))
- ->getMock()
- ;
- $dbConnectionMock->expects($this->any())
- ->method('getPrefix')
- ->willReturn($this->prefix)
- ;
- $releaseNotesMock = $this->getMockBuilder('OC\ReleaseNotes')
- ->setConstructorArgs([$dbConnectionMock])
- ->setMethods(['isMysql', 'isCliMode', 'countFilecacheEntries'])
- ->getMock()
- ;
-
- $releaseNotesMock->expects($this->any())
- ->method('isMysql')
- ->willReturn($isMysql)
- ;
- $releaseNotesMock->expects($this->any())
- ->method('isCliMode')
- ->willReturn($isCliMode)
- ;
- $releaseNotesMock->expects($this->any())
- ->method('countFilecacheEntries')
- ->willReturn($fileCount)
- ;
- return $releaseNotesMock;
- }
-
- private function getMethods($class){
- $methods = [];
- if (class_exists($class) || interface_exists($class)) {
- $reflector = new ReflectionClass($class);
- foreach ($reflector->getMethods( ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_ABSTRACT ) as $method) {
- $methods[] = $method->getName();
- }
- }
- return $methods;
- }
-}
diff --git a/tests/lib/releasenotestest.php b/tests/lib/releasenotestest.php
new file mode 100644
index 00000000000..aaa47bb2481
--- /dev/null
+++ b/tests/lib/releasenotestest.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * @author Victor Dubiniuk <dubiniuk@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Test;
+
+class ReleaseNotesTest extends \Test\TestCase {
+
+ /**
+ * @param bool $isMysql
+ * @param bool $isCliMode
+ * @param int $fileCount
+ * @return \PHPUnit_Framework_MockObject_MockObject|\OC\ReleaseNotes
+ */
+ protected function getReleaseNotesMock($isMysql, $isCliMode, $fileCount) {
+ $query = $this->getMockBuilder('OCP\DB\QueryBuilder\IQueryBuilder')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $query->expects($this->any())
+ ->method('getTableName')
+ ->willReturnCallback(function($tableName) {
+ return 'ocx_' . $tableName;
+ });
+
+ $dbConnectionMock = $this->getMockBuilder('OCP\IDBConnection')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $dbConnectionMock->expects($this->any())
+ ->method('getQueryBuilder')
+ ->willReturn($query);
+ $releaseNotesMock = $this->getMockBuilder('OC\ReleaseNotes')
+ ->setConstructorArgs([$dbConnectionMock])
+ ->setMethods(['isMysql', 'isCliMode', 'countFilecacheEntries'])
+ ->getMock();
+
+ $releaseNotesMock->expects($this->any())
+ ->method('isMysql')
+ ->willReturn($isMysql);
+ $releaseNotesMock->expects($this->any())
+ ->method('isCliMode')
+ ->willReturn($isCliMode);
+ $releaseNotesMock->expects($this->any())
+ ->method('countFilecacheEntries')
+ ->willReturn($fileCount);
+ return $releaseNotesMock;
+ }
+
+ public function data82to90() {
+ $alterTableMessage = 'Hint: You can speed up the upgrade by executing this SQL command manually: ALTER TABLE ocx_filecache ADD COLUMN checksum varchar(255) DEFAULT NULL AFTER permissions;';
+ $useCliMessage = 'You have an ownCloud installation with over 200.000 files so the upgrade might take a while. The recommendation is to use the command-line instead of the web interface for big ownCloud servers.';
+ return [
+ [[], false, false, 20],
+ [[], false, true, 20],
+ [[], true, false, 20],
+ [[], true, true, 20],
+ [[$useCliMessage], false, false, 1000000],
+ [[], false, true, 1000000],
+ [[$useCliMessage, $alterTableMessage], true, false, 1000000],
+ [[$alterTableMessage], true, true, 1000000],
+ ];
+ }
+
+ /**
+ * @dataProvider data82to90
+ *
+ * @param string[] $expected
+ * @param bool $isMysql
+ * @param bool $isCliMode
+ * @param int $fileCount
+ */
+ public function test82to90($expected, $isMysql, $isCliMode, $fileCount) {
+ $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $isCliMode, $fileCount);
+ $actual = $releaseNotesMock->getReleaseNotes('8.2.22', '9.0.1');
+ $this->assertEquals($expected, $actual);
+ }
+
+ public function data90to91() {
+ return [
+ [false, false, 20],
+ [false, true, 20],
+ [true, false, 20],
+ [true, true, 20],
+ [false, false, 1000000],
+ [false, true, 1000000],
+ [true, false, 1000000],
+ [true, true, 1000000],
+ ];
+ }
+
+ /**
+ * @dataProvider data90to91
+ *
+ * @param bool $isMysql
+ * @param bool $isCliMode
+ * @param int $fileCount
+ */
+ public function test90to91($isMysql, $isCliMode, $fileCount) {
+ $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $isCliMode, $fileCount);
+ $actual = $releaseNotesMock->getReleaseNotes('9.0.1', '9.1.0');
+ $this->assertCount(0, $actual);
+ }
+}