summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-11-06 14:05:38 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2014-11-06 14:05:38 +0100
commit5395685b0556921bc87ccc7e4076caabd16f0bcf (patch)
tree784f8ad2bd867b7272e912d0dea1c154aa6761c2 /tests
parent2a601bc35b26599fb08f4f6a748caee52bedf1a5 (diff)
add fixtures import
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/bootstrap.php151
-rw-r--r--tests/integration/db/ItemMapperTest.php59
-rw-r--r--tests/integration/fixtures/feeds.json88
-rw-r--r--tests/integration/fixtures/folders.json17
-rw-r--r--tests/integration/fixtures/items.json5
5 files changed, 260 insertions, 60 deletions
diff --git a/tests/integration/bootstrap.php b/tests/integration/bootstrap.php
index 0f010b8f4..8096cbacd 100644
--- a/tests/integration/bootstrap.php
+++ b/tests/integration/bootstrap.php
@@ -3,11 +3,42 @@ namespace OCA\News\Tests\Integration;
require_once __DIR__ . '/../../../../lib/base.php';
+use \OCA\News\AppInfo\Application;
+use \OCA\News\Db\Folder;
+use \OCA\News\Db\Feed;
+use \OCA\News\Db\Item;
class NewsIntegrationTest extends \PHPUnit_Framework_TestCase {
protected $userId = 'test';
protected $userPassword = 'test';
+ protected $ownCloudVersion;
+ protected $container;
+ protected $folderMapper;
+ protected $feedMapper;
+ protected $itemMapper;
+ protected $folders = [];
+ protected $feeds = [];
+ protected $items = [];
+
+ protected function setUp() {
+ $this->ownCloudVersion = \OCP\Util::getVersion();
+ $this->cleanUp();
+ $this->setupUser($this->userId, $this->userPassword);
+
+ $app = new Application();
+ $this->container = $app->getContainer();
+ $this->itemMapper = $this->container->query('ItemMapper');
+ $this->feedMapper = $this->container->query('FeedMapper');
+ $this->folderMapper = $this->container->query('FolderMapper');
+
+ $this->loadFixtures(
+ $this->folderMapper,
+ $this->feedMapper,
+ $this->itemMapper
+ );
+ }
+
protected function clearNewsDatabase($user='test') {
$sql = [
@@ -24,12 +55,119 @@ class NewsIntegrationTest extends \PHPUnit_Framework_TestCase {
}
+ protected function loadFixtures($folderMapper, $feedMapper, $itemMapper) {
+ $folders = file_get_contents(__DIR__ . '/fixtures/folders.json');
+ $feeds = file_get_contents(__DIR__ . '/fixtures/feeds.json');
+ $items = file_get_contents(__DIR__ . '/fixtures/items.json');
+
+ $folders = json_decode($folders, true);
+ $feeds = json_decode($feeds, true);
+ $items = json_decode($items, true);
+
+ // feeds in folders
+ foreach($folders as $folder) {
+ $newFolder = $this->createFolder($folder);
+ $this->folders[$newFolder->getName()] = $newFolder;
+
+ if (array_key_exists($folder['name'], $feeds)) {
+ foreach ($feeds[$folder['name']] as $feed) {
+ $feed['folderId'] = $newFolder->getId();
+ $newFeed = $this->createFeed($feed);
+ $this->feeds[$newFeed->getTitle()] = $newFeed;
+
+ if (array_key_exists($feed['title'], $items)) {
+ foreach ($items[$feed['title']] as $item) {
+ $item['feedId'] = $newFeed->getId();
+ $this->items[$item->getTitle()] =
+ $this->createItem($item);
+ }
+ }
+ }
+ }
+ }
+
+ // feeds in no folders
+ if (array_key_exists('no feed', $feeds)) {
+ foreach ($feeds['no feed'] as $feed) {
+ $feed['folderId'] = 0;
+ $this->feeds[] = $this->createFeed($feed);
+
+ if (array_key_exists($feed['title'], $items)) {
+ foreach ($items[$feed['title']] as $item) {
+ $item['feedId'] = $newFeed->getId();
+ $this->items[$item->getTitle()] =
+ $this->createItem($item);
+ }
+ }
+ }
+ }
+ }
+
+
+ private function createFolder($folder) {
+ $newFolder = new Folder();
+ $newFolder->setName($folder['name']);
+ $newFolder->setUserId($this->userId);
+ $newFolder->setParentId(0);
+ $newFolder->setOpened($folder['opened']);
+ $newFolder->setDeletedAt($folder['deletedAt']);
+ return $this->folderMapper->insert($newFolder);
+ }
+
+
+ private function createFeed($feed) {
+ $newFeed = new Feed();
+ $newFeed->setUserId($this->userId);
+ $newFeed->setFolderId($feed['folderId']);
+ $newFeed->setTitle($feed['title']);
+ $newFeed->setUrl($feed['url']);
+ $newFeed->setLocation($feed['location']);
+ $newFeed->setFaviconLink($feed['faviconLink']);
+ $newFeed->setAdded($feed['added']);
+ $newFeed->setLink($feed['link']);
+ $newFeed->setPreventUpdate($feed['preventUpdate']);
+ $newFeed->setDeletedAt($feed['deletedAt']);
+ $newFeed->setArticlesPerUpdate($feed['articlesPerUpdate']);
+ $newFeed->setLastModified($feed['lastModified']);
+ $newFeed->setEtag($feed['etag']);
+ return $this->feedMapper->insert($newFeed);
+ }
+
+
+ private function createItem($item) {
+ $newItem = new Item();
+ $newItem->setFeedId($item['feedId']);
+ $newItem->setStatus($item['status']);
+ $newItem->setBody($item['body']);
+ $newItem->setTitle($item['title']);
+ $newItem->setAuthor($item['author']);
+ $newItem->setGuid($item['guid']);
+ $newItem->setUrl($item['url']);
+ $newItem->setPubDate($item['pubDate']);
+ $newItem->setLastModified($item['lastModified']);
+ $newItem->setEnclosureMime($item['enclosureMime']);
+ $newItem->setEnclosureLink($item['enclosureLink']);
+ return $this->itemMapper->insert($item);
+ }
+
+
+ protected function whenOlderThan($olderThan, $callback) {
+ $ocVersion = $this->ownCloudVersion;
+ if (version_compare(implode('.', $ocVersion), $olderThan, '<=')) {
+ $callback();
+ }
+ }
+
+
protected function setupUser($user='test', $password='test') {
$userManager = \OC::$server->getUserManager();
if ($userManager->userExists($user)) {
$userManager->get($user)->delete();
- $userManager->delete($user);
+
+ $this->whenOlderThan('7.8', function () use ($user, $userManager) {
+ $userManager->delete($user);
+ });
}
$userManager->createUser($user, $password);
@@ -38,14 +176,15 @@ class NewsIntegrationTest extends \PHPUnit_Framework_TestCase {
$session->login($user, $password);
}
-
- protected function setUp() {
- $this->setupUser($this->userId, $this->userPassword);
+ private function cleanUp() {
+ $this->clearNewsDatabase($this->userId);
+ $this->folders = [];
+ $this->feeds = [];
+ $this->items = [];
}
-
protected function tearDown() {
- $this->clearNewsDatabase($this->userId);
+ $this->cleanUp();
}
diff --git a/tests/integration/db/ItemMapperTest.php b/tests/integration/db/ItemMapperTest.php
index 1ae0d117d..dcc27ab98 100644
--- a/tests/integration/db/ItemMapperTest.php
+++ b/tests/integration/db/ItemMapperTest.php
@@ -2,71 +2,22 @@
namespace OCA\News\Db;
-use \OCA\News\AppInfo\Application;
use \OCA\News\Tests\Integration\NewsIntegrationTest;
class ItemMapperTest extends NewsIntegrationTest {
- private $container;
- private $itemMapper;
- protected function setUp() {
- parent::setUp();
- $app = new Application();
- $this->container = $app->getContainer();
- $this->itemMapper = $this->container->query('ItemMapper');
- $this->feedMapper = $this->container->query('FeedMapper');
- $this->folderMapper = $this->container->query('FolderMapper');
- }
-
-
- private function setupFeedAndFolder($feedOptions=[], $folderOptions=[]) {
- $folderDefault = [
- 'id' => 5,
- 'userId' => $this->userId,
- 'name' => 'a folder',
- 'parentId' => 0
- ];
- $feedDefault = [
- 'id' => 3,
- 'userId' => $this->userId,
- 'url' => 'http://google.com',
- 'title' => 'le feed',
- 'folderId' => 5
- ];
-
- $folderDefault = array_merge($folderDefault, $folderOptions);
- $feedDefault = array_merge($feedDefault, $feedOptions);
-
- $feed = new Feed();
- foreach ($feedDefault as $key => $value) {
- $method = 'set' . ucfirst($key);
- $feed->$method($value);
- }
- $this->feedMapper->insert($feed);
-
- $folder = new Folder();
- foreach ($folderDefault as $key => $value) {
- $method = 'set' . ucfirst($key);
- $folder->$method($value);
- }
- $this->folderMapper->insert($folder);
-
- }
-
-
- public function testInsert() {
- $this->setupFeedAndFolder();
+ public function testFind() {
+ $feedId = $this->feeds['first feed']->getId();
$item = new Item();
- $item->setTitle('my title');
- $item->setGuid('test');
- $item->setFeedId(3);
+ $item->setTitle('my title thats long');
+ $item->setGuid('a doner');
+ $item->setFeedId($feedId);
$item->setUnread();
$item->setBody('Döner');
$created = $this->itemMapper->insert($item);
-
$fetched = $this->itemMapper->find($created->getId(), $this->userId);
$this->assertEquals($item->getTitle(), $fetched->getTitle());
diff --git a/tests/integration/fixtures/feeds.json b/tests/integration/fixtures/feeds.json
new file mode 100644
index 000000000..c3848bd78
--- /dev/null
+++ b/tests/integration/fixtures/feeds.json
@@ -0,0 +1,88 @@
+{
+ "first folder": [
+ {
+ "title": "first feed",
+ "folderName": "first folder",
+ "url": "http://google.de",
+ "deletedAt": 0,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ },
+ {
+ "title": "second feed",
+ "folderName": "first folder",
+ "url": "http://golem.de",
+ "deletedAt": 0,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ }
+ ],
+ "second folder": [
+ {
+ "title": "third feed",
+ "url": "http://heise.de",
+ "deletedAt": 0,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ },
+ {
+ "title": "fifth feed",
+ "url": "http://gremlins.de",
+ "deletedAt": 999999999,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ }
+ ],
+ "no folder": [{
+ "title": "fourth feed",
+ "url": "http://blog.fefe.de",
+ "deletedAt": 0,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ }
+ ],
+ "third folder": [{
+ "title": "fifth feed",
+ "url": "http://prolinux.de",
+ "deletedAt": 0,
+ "location": "http://feed.com/rss",
+ "faviconLink": "Http://feed.com/favicon.ico",
+ "added": 3000,
+ "link": "http://feed.com/rss",
+ "preventUpdate": false,
+ "articlesPerUpdate": 40,
+ "lastModified": "",
+ "etag": ""
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/integration/fixtures/folders.json b/tests/integration/fixtures/folders.json
new file mode 100644
index 000000000..3c79ef52b
--- /dev/null
+++ b/tests/integration/fixtures/folders.json
@@ -0,0 +1,17 @@
+[
+ {
+ "name": "first folder",
+ "deletedAt": 0,
+ "opened": true
+ },
+ {
+ "name": "second folder",
+ "deletedAt": 0,
+ "opened": false
+ },
+ {
+ "name": "third folder",
+ "deletedAt": 9999999999,
+ "opened": true
+ }
+] \ No newline at end of file
diff --git a/tests/integration/fixtures/items.json b/tests/integration/fixtures/items.json
new file mode 100644
index 000000000..56c70edbe
--- /dev/null
+++ b/tests/integration/fixtures/items.json
@@ -0,0 +1,5 @@
+{
+ "first feed": [
+
+ ]
+} \ No newline at end of file