diff options
Diffstat (limited to 'tests/Unit/Migration/MigrateStatusFlagsTest.php')
-rw-r--r-- | tests/Unit/Migration/MigrateStatusFlagsTest.php | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/Unit/Migration/MigrateStatusFlagsTest.php b/tests/Unit/Migration/MigrateStatusFlagsTest.php new file mode 100644 index 000000000..bee3532c1 --- /dev/null +++ b/tests/Unit/Migration/MigrateStatusFlagsTest.php @@ -0,0 +1,99 @@ +<?php +/** + * Nextcloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Daniel Opitz <dev@copynpaste.de> + * @copyright Daniel Opitz 2017 + */ + +namespace OCA\News\Migration; + +use Doctrine\DBAL\Driver\Statement; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use Test\TestCase; + +class MigrateStatusFlagsTest extends TestCase { + + /** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */ + protected $db; + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + protected $config; + /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject */ + protected $output; + + protected function setUp() { + $this->db = $this->createMock(IDBConnection::class); + $this->config = $this->createMock(IConfig::class); + $this->output = $this->createMock(IOutput::class); + } + + public function testRun() { + $statement = $this->createMock(Statement::class); + $statement->expects($this->exactly(1)) + ->method('execute') + ->with() + ->willReturn(true); + + $this->config->expects($this->exactly(1)) + ->method('getAppValue') + ->with('news', 'installed_version', '0.0.0') + ->willReturn('11.0.5'); + + $sql = 'UPDATE `*PREFIX*news_items` ' + . 'SET `unread` = ((`status` & 2) = 2), ' + . '`starred` = ((`status` & 4) = 4)'; + + $this->db->expects($this->exactly(1)) + ->method('prepare') + ->with($sql) + ->willReturn($statement); + + $migration = new MigrateStatusFlags($this->db, $this->config); + $migration->run($this->output); + } + + /** + * @expectedException \Exception + */ + public function testRunException() { + $statement = $this->createMock(Statement::class); + $statement->expects($this->exactly(1)) + ->method('execute') + ->with() + ->willReturn(false); + + $this->config->expects($this->exactly(1)) + ->method('getAppValue') + ->with('news', 'installed_version', '0.0.0') + ->willReturn('11.0.5'); + + $sql = 'UPDATE `*PREFIX*news_items` ' + . 'SET `unread` = ((`status` & 2) = 2), ' + . '`starred` = ((`status` & 4) = 4)'; + + $this->db->expects($this->exactly(1)) + ->method('prepare') + ->with($sql) + ->willReturn($statement); + + $migration = new MigrateStatusFlags($this->db, $this->config); + $migration->run($this->output); + } + + public function testRunNewerVersion() { + $this->config->expects($this->exactly(1)) + ->method('getAppValue') + ->with('news', 'installed_version', '0.0.0') + ->willReturn('11.1.0'); + $this->db->expects($this->exactly(0)) + ->method('prepare'); + + $migration = new MigrateStatusFlags($this->db, $this->config); + $migration->run($this->output); + } +}
\ No newline at end of file |