diff options
author | Victor Dubiniuk <victor.dubiniuk@gmail.com> | 2016-03-24 20:44:54 +0300 |
---|---|---|
committer | Victor Dubiniuk <victor.dubiniuk@gmail.com> | 2016-04-05 17:13:31 +0300 |
commit | b05269826a64f9a45dd84c29b6d76884c9dff2f3 (patch) | |
tree | 5304d468f9671c94d7e75f4004a2dcad79cba756 /tests | |
parent | 277c9f4a03be77c03a7b051cf92bfc0e14c3e398 (diff) | |
download | nextcloud-server-b05269826a64f9a45dd84c29b6d76884c9dff2f3.tar.gz nextcloud-server-b05269826a64f9a45dd84c29b6d76884c9dff2f3.zip |
Add releasenotes class
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/releasenotes.php | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/lib/releasenotes.php b/tests/lib/releasenotes.php new file mode 100644 index 00000000000..8219c6194d3 --- /dev/null +++ b/tests/lib/releasenotes.php @@ -0,0 +1,114 @@ +<?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(){ + return [ + [ [], false, 20 ], + [ [], false, 1000000 ], + [ [], true, 20 ], + [ [ + \OC::$server->getL10N('core')->t( + "You have an ownCloud installation with over 200.000 files so the upgrade might take a while. 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'] + ) + ], true, 1000000 ], + ]; + } + + /** + * @dataProvider resultProvider82to90 + */ + public function test82to90($expected, $isMysql, $fileCount){ + $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $fileCount); + $actual = $releaseNotesMock->getReleaseNotes('8.2.22', '9.0.1'); + $this->assertEquals($expected, $actual); + } + + + + public function resultProvider90to91(){ + return [ + [ [], false, 20 ], + [ [], false, 1000000 ], + [ [], true, 20 ], + [ [], true, 1000000 ], + ]; + } + + /** + * @dataProvider resultProvider90to91 + */ + public function test90to91($expected, $isMysql, $fileCount){ + $releaseNotesMock = $this->getReleaseNotesMock($isMysql, $fileCount); + $actual = $releaseNotesMock->getReleaseNotes('9.0.1', '9.1.0'); + $this->assertEquals($expected, $actual); + } + + + private function getReleaseNotesMock($isMysql, $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', 'countFilecacheEntries']) + ->getMock() + ; + + $releaseNotesMock->expects($this->any()) + ->method('isMysql') + ->willReturn($isMysql) + ; + $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; + } +} |