summaryrefslogtreecommitdiffstats
path: root/tests/Integration/IntegrationTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Integration/IntegrationTest.php')
-rw-r--r--tests/Integration/IntegrationTest.php225
1 files changed, 0 insertions, 225 deletions
diff --git a/tests/Integration/IntegrationTest.php b/tests/Integration/IntegrationTest.php
deleted file mode 100644
index 7c9acf170..000000000
--- a/tests/Integration/IntegrationTest.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-/**
- * Nextcloud - 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 OCA\News\Db\FolderMapperV2;
-use OCA\News\Db\Item;
-use OCP\AppFramework\Db\Entity;
-use OCP\AppFramework\IAppContainer;
-
-use OCP\IDBConnection;
-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;
-
-abstract class IntegrationTest extends \Test\TestCase
-{
-
- protected $user = 'test';
- protected $userPassword = 'test';
-
- /**
- * @var ItemMapper
- */
- protected $itemMapper;
-
- /**
- * @var FeedMapper
- */
- protected $feedMapper;
-
- /**
- * @var FolderMapperV2
- */
- protected $folderMapper;
-
- /**
- * @var IAppContainer
- */
- protected $container;
-
- protected function setUp(): void
- {
- 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->get(ItemMapper::class);
- $this->feedMapper = $this->container->get(FeedMapper::class);
- $this->folderMapper = $this->container->get(FolderMapperV2::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 findFeedByTitle($title)
- {
- return $this->feedMapper->where(
- [
- 'userId' => $this->user,
- 'title' => $title
- ]
- )[0];
- }
-
- /**
- * @param string $name loads fixtures from a given file
- */
- protected function loadFixtures(string $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 = null)
- {
- foreach ($feedFixtures as $feedFixture) {
- $feed = new FeedFixture($feedFixture);
- $feed->setFolderId($folderId);
- $feedId = $this->loadFixture($feed);
-
- if (!empty($feedFixture['items'])) {
- $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->get(IUserManager::class);
- $userManager->createUser($user, $password);
-
- $this->loginAsUser($user);
- }
-
- /**
- * Removes a user and his News app database entries from the database
- *
- * @param $user
- */
- protected function tearDownUser($user)
- {
- $userManager = $this->container->get(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(string $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->get(IDBConnection::class);
- foreach ($sql as $query) {
- $db->prepare($query)->execute([$user]);
- }
- }
-
- protected function tearDown(): void
- {
- parent::tearDown();
- $this->tearDownUser($this->user);
- }
-
-} \ No newline at end of file