diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-07-23 21:24:54 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-07-23 21:24:54 +0200 |
commit | 004fcbbcc7609ca83807f2e38967ef54f469bf72 (patch) | |
tree | 49eb99b4ea92b2045793fc567f719b31ec7f9042 /tests/integration/integrationtest.php | |
parent | 60abc0ed4438c9b6fda245b0dc33cb483bc2aeaf (diff) |
Move to new directory structure
Diffstat (limited to 'tests/integration/integrationtest.php')
-rw-r--r-- | tests/integration/integrationtest.php | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/tests/integration/integrationtest.php b/tests/integration/integrationtest.php deleted file mode 100644 index 50c172705..000000000 --- a/tests/integration/integrationtest.php +++ /dev/null @@ -1,206 +0,0 @@ -<?php -/** - * ownCloud - News - * - * This file is licensed under the Affero General Public License version 3 or - * later. See the COPYING file. - * - * @author Bernhard Posselt <dev@bernhard-posselt.com> - * @copyright Bernhard Posselt 2015 - */ - - -namespace OCA\News\Tests\Integration; - -use PHPUnit_Framework_TestCase; - -use OCA\News\Db\Feed; -use OCA\News\Db\Item; -use OCP\AppFramework\Db\Entity; -use OCP\AppFramework\IAppContainer; - -use OCP\IDb; -use OCP\IUserSession; -use OCP\IUserManager; - -use OCA\News\AppInfo\Application; -use OCA\News\Tests\Integration\Fixtures\ItemFixture; -use OCA\News\Tests\Integration\Fixtures\FeedFixture; -use OCA\News\Tests\Integration\Fixtures\FolderFixture; -use OCA\News\Db\FeedMapper; -use OCA\News\Db\ItemMapper; -use OCA\News\Db\FolderMapper; - - -abstract class IntegrationTest extends PHPUnit_Framework_TestCase { - - protected $user = 'test'; - protected $userPassword = 'test'; - - /** @var ItemMapper */ - protected $itemMapper; - - /** @var FeedMapper */ - protected $feedMapper; - - /** @var FolderMapper */ - protected $folderMapper; - - /** @var IAppContainer */ - protected $container; - - protected function setUp() { - parent::setUp(); - $app = new Application(); - $this->container = $app->getContainer(); - $this->tearDownUser($this->user); - $this->setupUser($this->user, $this->userPassword); - - // set up database layers - $this->itemMapper = $this->container->query(ItemMapper::class); - $this->feedMapper = $this->container->query(FeedMapper::class); - $this->folderMapper = $this->container->query(FolderMapper::class); - } - - protected function findItemByTitle($title) { - // db logic in app code, negligible since its a test - $items = $this->itemMapper->where(['title' => $title]); - $feeds = $this->feedMapper->where(['userId' => $this->user]); - - $feedIds = []; - foreach ($feeds as $feed) { - $feedIds[$feed->getId()] = true; - } - - $result = array_filter($items, - function (Item $item) use ($feedIds) { - return array_key_exists($item->getFeedId(), $feedIds); - }); - - // ok so this is funny: array_filter preserves indices, meaning that - // you can't use 0 as key for the first element return from it :D - $result = array_values($result)[0]; - - return $result; - } - - protected function findFolderByName($name) { - return $this->folderMapper->where([ - 'userId' => $this->user, - 'name' => $name - ])[0]; - } - - protected function findFeedByTitle($title) { - return $this->feedMapper->where([ - 'userId' => $this->user, - 'title' => $title - ])[0]; - } - - /** - * @param string $name loads fixtures from a given file - */ - protected function loadFixtures($name) { - $fixtures = include __DIR__ . '/fixtures/data/' . $name . '.php'; - if (array_key_exists('folders', $fixtures)) { - $this->loadFolderFixtures($fixtures['folders']); - } - if (array_key_exists('feeds', $fixtures)) { - $this->loadFeedFixtures($fixtures['feeds']); - } - } - - protected function loadFolderFixtures(array $folderFixtures=[]) { - foreach ($folderFixtures as $folderFixture) { - $folder = new FolderFixture($folderFixture); - $folderId = $this->loadFixture($folder); - $this->loadFeedFixtures($folderFixture['feeds'], $folderId); - } - } - - protected function loadFeedFixtures(array $feedFixtures=[], $folderId=0) { - foreach ($feedFixtures as $feedFixture) { - $feed = new FeedFixture($feedFixture); - $feed->setFolderId($folderId); - $feedId = $this->loadFixture($feed); - $this->loadItemFixtures($feedFixture['items'], $feedId); - } - } - - protected function loadItemFixtures(array $itemFixtures=[], $feedId) { - foreach ($itemFixtures as $itemFixture) { - $item = new ItemFixture($itemFixture); - $item->setFeedId($feedId); - $this->loadFixture($item); - } - } - - /** - * Saves a fixture in a database and returns the saved result - * @param Entity $fixture - * @return int the id - */ - protected function loadFixture(Entity $fixture) { - if ($fixture instanceof FeedFixture) { - return $this->feedMapper->insert($fixture)->getId(); - } elseif ($fixture instanceof ItemFixture) { - return $this->itemMapper->insert($fixture)->getId(); - } elseif ($fixture instanceof FolderFixture) { - return $this->folderMapper->insert($fixture)->getId(); - } - - throw new \InvalidArgumentException('Invalid fixture class given'); - } - - /** - * Creates and logs in a new ownCloud user - * @param $user - * @param $password - */ - protected function setupUser($user, $password) { - $userManager = $this->container->query(IUserManager::class); - $userManager->createUser($user, $password); - - $session = $this->container->query(IUserSession::class); - $session->login($user, $password); - } - - /** - * Removes a user and his News app database entries from the database - * @param $user - */ - protected function tearDownUser($user) { - $userManager = $this->container->query(IUserManager::class); - - if ($userManager->userExists($user)) { - $userManager->get($user)->delete(); - } - - $this->clearUserNewsDatabase($user); - } - - /** - * Deletes all news entries of a given user - * @param string $user - */ - protected function clearUserNewsDatabase($user) { - $sql = [ - 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` IN - (SELECT `id` FROM `*PREFIX*news_feeds` WHERE `user_id` = ?)', - 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?', - 'DELETE FROM `*PREFIX*news_folders` WHERE `user_id` = ?' - ]; - - $db = $this->container->query(IDb::class); - foreach ($sql as $query) { - $db->prepareQuery($query)->execute([$user]); - } - } - - protected function tearDown() { - parent::tearDown(); - $this->tearDownUser($this->user); - } - -}
\ No newline at end of file |