introduce integration tests
This commit is contained in:
parent
f3f0881758
commit
3b33544cae
@ -11,7 +11,7 @@ defined('HTTP_TIMEOUT') or define('HTTP_TIMEOUT', 20);
|
||||
|
||||
defined('BASE_URL_DIRECTORY') or define('BASE_URL_DIRECTORY', dirname($_SERVER['PHP_SELF']));
|
||||
defined('ROOT_DIRECTORY') or define('ROOT_DIRECTORY', __DIR__);
|
||||
defined('DATA_DIRECTORY') or define('DATA_DIRECTORY', __DIR__.'/data');
|
||||
defined('DATA_DIRECTORY') or define('DATA_DIRECTORY', ROOT_DIRECTORY.DIRECTORY_SEPARATOR.'data');
|
||||
|
||||
defined('ENABLE_MULTIPLE_DB') or define('ENABLE_MULTIPLE_DB', true);
|
||||
defined('DB_FILENAME') or define('DB_FILENAME', 'db.sqlite');
|
||||
|
113
docs/tests.markdown
Normal file
113
docs/tests.markdown
Normal file
@ -0,0 +1,113 @@
|
||||
How to run integration tests?
|
||||
=============================
|
||||
|
||||
[PHPUnit](https://phpunit.de/) and [Selenium server](http://www.seleniumhq.org) is used to run automatic tests on Miniflux.
|
||||
|
||||
You can run tests across different browser to be sure that the result is the same everywhere.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- PHP command line
|
||||
- PHPUnit (including phpunit-selenium & dbunit) installed
|
||||
- Java
|
||||
- Selenium server
|
||||
|
||||
|
||||
Install the latest version of PHPUnit
|
||||
-------------------------------------
|
||||
|
||||
Download the PHPUnit PHAR (includes dbunit & phpunit-selenium) and copy the file somewhere in your `$PATH`:
|
||||
|
||||
```bash
|
||||
wget https://phar.phpunit.de/phpunit.phar
|
||||
chmod +x phpunit.phar
|
||||
sudo mv phpunit.phar /usr/local/bin/phpunit
|
||||
phpunit --version
|
||||
PHPUnit 4.4.0 by Sebastian Bergmann.
|
||||
```
|
||||
|
||||
|
||||
Install the latest version of Selenium Server
|
||||
---------------------------------------------
|
||||
|
||||
Download the distribution archive of [Selenium Server](http://www.seleniumhq.org/download/) and the platform and browser specific driver. The following browser driver exist:
|
||||
|
||||
- Firefox webdriver is default included
|
||||
- [Chrome webdriver](https://sites.google.com/a/chromium.org/chromedriver/downloads)
|
||||
- [Internet Explorer webdriver](http://www.seleniumhq.org/download/) (windows only, obviously)
|
||||
- Safari ([broken at the moment](https://code.google.com/p/selenium/issues/detail?id=4136))
|
||||
|
||||
Start the Selenium Server on the machine which has the browser(s) to test against installed by running:
|
||||
|
||||
```cmd
|
||||
java -jar "C:\selenium\selenium-server-standalone-2.44.0.jar" -Dwebdriver.ie.driver="C:\selenium\IEDriverServer.exe" -Dwebdriver.chrome.driver="C:\selenium\chromedriver.exe"
|
||||
```
|
||||
|
||||
|
||||
Running integration tests
|
||||
-------------------------
|
||||
|
||||
PHPUnit creates a new database with the default credentials for the unit tests. You have to run the tests within the Miniflux directory that is accessible via webserver.
|
||||
|
||||
You need to setup the Miniflux url and the browser you would like to test against in the configfile `phpunit.xml`. Its highly recommend to test only against one browser per run to speed-up testing. Browser session reusing does not work with selenium server and phpunit-selenium browser sharing feature is limited to cases where only a single browser is used.
|
||||
|
||||
The following `phpunit.xml` is used to run phpunit on a linux system with apache2 installed and test against a Internet Explorer on a remote windows with Selenium Server + Internet Explorer webdriver installed:
|
||||
|
||||
```xml
|
||||
<phpunit>
|
||||
<php>
|
||||
<const name="DB_FILENAME" value="unittest.sqlite" />
|
||||
<const name="PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL" value="http://linux.example.org/miniflux/" />
|
||||
<const name="PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BROWSERS" value='
|
||||
[
|
||||
{
|
||||
"browserName": "iexplore",
|
||||
"host": "windows.example.org",
|
||||
"port": 4444,
|
||||
"sessionStrategy": "shared"
|
||||
}
|
||||
]
|
||||
'/>
|
||||
</php>
|
||||
<listeners>
|
||||
<listener class="PHPUnit_Extensions_Selenium2TestCase_ScreenshotListener">
|
||||
<arguments>
|
||||
<string>./tests/</string>
|
||||
</arguments>
|
||||
</listener>
|
||||
</listeners>
|
||||
<testsuites>
|
||||
<testsuite name="Miniflux">
|
||||
<directory>tests/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
||||
|
||||
```
|
||||
|
||||
You can run the tests by executing phpunit within the Miniflux directory:
|
||||
|
||||
|
||||
```bash
|
||||
/usr/local/bin/phpunit
|
||||
|
||||
PHPUnit 4.4.0 by Sebastian Bergmann.
|
||||
|
||||
Configuration read from /var/www/miniflux/phpunit.xml
|
||||
|
||||
................................................................. 65 / 83 ( 78%)
|
||||
..................
|
||||
|
||||
Time: 3.74 minutes, Memory: 21.00Mb
|
||||
|
||||
OK (83 tests, 485 assertions)
|
||||
|
||||
```
|
||||
|
||||
In case of unsuccessful tests, you will find screenshots from the failed website in the ./tests/ directory.
|
||||
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
As the webdrivers using javascript to execute the tests within the browsers, it is not possible to disable javascript and tests the non-javascript fall-back functionality.
|
41
phpunit.xml
Normal file
41
phpunit.xml
Normal file
@ -0,0 +1,41 @@
|
||||
<phpunit>
|
||||
<php>
|
||||
<const name="DB_FILENAME" value="unittest.sqlite" />
|
||||
<const name="PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL" value="http://localhost/miniflux/" />
|
||||
<const name="PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BROWSERS" value='
|
||||
[
|
||||
{
|
||||
"browserName": "firefox",
|
||||
"host": "localhost",
|
||||
"port": 4444,
|
||||
"sessionStrategy": "shared"
|
||||
},
|
||||
{
|
||||
"browserName": "iexplore",
|
||||
"host": "localhost",
|
||||
"port": 4444,
|
||||
"sessionStrategy": "shared"
|
||||
},
|
||||
{
|
||||
"browserName": "chrome",
|
||||
"host": "localhost",
|
||||
"port": 4444,
|
||||
"sessionStrategy": "shared"
|
||||
}
|
||||
]
|
||||
'/>
|
||||
</php>
|
||||
<listeners>
|
||||
<listener class="PHPUnit_Extensions_Selenium2TestCase_ScreenshotListener">
|
||||
<arguments>
|
||||
<string>./tests/</string>
|
||||
</arguments>
|
||||
</listener>
|
||||
</listeners>
|
||||
<testsuites>
|
||||
<testsuite name="Miniflux">
|
||||
<directory>tests/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
</phpunit>
|
178
tests/integration/datasets/expected_BookmarkReadArticle.xml
Normal file
178
tests/integration/datasets/expected_BookmarkReadArticle.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
178
tests/integration/datasets/expected_BookmarkUnreadArticle.xml
Normal file
178
tests/integration/datasets/expected_BookmarkUnreadArticle.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
155
tests/integration/datasets/expected_FirstFeedAllRemoved.xml
Normal file
155
tests/integration/datasets/expected_FirstFeedAllRemoved.xml
Normal file
@ -0,0 +1,155 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
178
tests/integration/datasets/expected_MarkFeedRead.xml
Normal file
178
tests/integration/datasets/expected_MarkFeedRead.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
247
tests/integration/datasets/expected_NoBookmarkedArticles.xml
Normal file
247
tests/integration/datasets/expected_NoBookmarkedArticles.xml
Normal file
@ -0,0 +1,247 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master.atom</value>
|
||||
<value>Recent Commits to miniflux:master</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>1f4670bf</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e1b22f2d3592d653d4c22ce5f137bb1e0ae5dd3f</value>
|
||||
<value>Redirect to the feed page after adding a subscription</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Redirect to the feed page after adding a subscription</pre></value>
|
||||
<value>##TIMESTAMP##89</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2063e830</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e732e80deed05ea46667957835b2499bb895ebe9</value>
|
||||
<value>Update the Json-RPC library and improve make-archive.sh</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update the Json-RPC library and improve make-archive.sh</pre></value>
|
||||
<value>##TIMESTAMP##88</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>208ee9dd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/871f1d1d6410403599c774ad9aa20e55c77162fc</value>
|
||||
<value>Update PicoDb and improve schema migration error handling</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update PicoDb and improve schema migration error handling</pre></value>
|
||||
<value>##TIMESTAMP##87</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3530d7cd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/d7e5cd0ad424859912fc209651494fad5c52cd34</value>
|
||||
<value>New theme: 'Hello' created by Meradoou</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>New theme: &#039;Hello&#039; created by Meradoou</pre></value>
|
||||
<value>##TIMESTAMP##86</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
247
tests/integration/datasets/expected_NoReadArticles.xml
Normal file
247
tests/integration/datasets/expected_NoReadArticles.xml
Normal file
@ -0,0 +1,247 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master.atom</value>
|
||||
<value>Recent Commits to miniflux:master</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>1f4670bf</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e1b22f2d3592d653d4c22ce5f137bb1e0ae5dd3f</value>
|
||||
<value>Redirect to the feed page after adding a subscription</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Redirect to the feed page after adding a subscription</pre></value>
|
||||
<value>##TIMESTAMP##89</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2063e830</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e732e80deed05ea46667957835b2499bb895ebe9</value>
|
||||
<value>Update the Json-RPC library and improve make-archive.sh</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update the Json-RPC library and improve make-archive.sh</pre></value>
|
||||
<value>##TIMESTAMP##88</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>208ee9dd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/871f1d1d6410403599c774ad9aa20e55c77162fc</value>
|
||||
<value>Update PicoDb and improve schema migration error handling</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update PicoDb and improve schema migration error handling</pre></value>
|
||||
<value>##TIMESTAMP##87</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3530d7cd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/d7e5cd0ad424859912fc209651494fad5c52cd34</value>
|
||||
<value>New theme: 'Hello' created by Meradoou</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>New theme: &#039;Hello&#039; created by Meradoou</pre></value>
|
||||
<value>##TIMESTAMP##86</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,243 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master.atom</value>
|
||||
<value>Recent Commits to miniflux:master</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>1f4670bf</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e1b22f2d3592d653d4c22ce5f137bb1e0ae5dd3f</value>
|
||||
<value>Redirect to the feed page after adding a subscription</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Redirect to the feed page after adding a subscription</pre></value>
|
||||
<value>##TIMESTAMP##89</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2063e830</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e732e80deed05ea46667957835b2499bb895ebe9</value>
|
||||
<value>Update the Json-RPC library and improve make-archive.sh</value>
|
||||
<value>fguillot</value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##88</value>
|
||||
<value>removed</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>208ee9dd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/871f1d1d6410403599c774ad9aa20e55c77162fc</value>
|
||||
<value>Update PicoDb and improve schema migration error handling</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update PicoDb and improve schema migration error handling</pre></value>
|
||||
<value>##TIMESTAMP##87</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3530d7cd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/d7e5cd0ad424859912fc209651494fad5c52cd34</value>
|
||||
<value>New theme: 'Hello' created by Meradoou</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>New theme: &#039;Hello&#039; created by Meradoou</pre></value>
|
||||
<value>##TIMESTAMP##86</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
@ -0,0 +1,169 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>removed</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
178
tests/integration/datasets/expected_UnbookmarkReadArticle.xml
Normal file
178
tests/integration/datasets/expected_UnbookmarkReadArticle.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
178
tests/integration/datasets/expected_UnbookmarkUnreadArticle.xml
Normal file
178
tests/integration/datasets/expected_UnbookmarkUnreadArticle.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
247
tests/integration/datasets/fixture_OnlyReadArticles.xml
Normal file
247
tests/integration/datasets/fixture_OnlyReadArticles.xml
Normal file
@ -0,0 +1,247 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master.atom</value>
|
||||
<value>Recent Commits to miniflux:master</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>1f4670bf</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e1b22f2d3592d653d4c22ce5f137bb1e0ae5dd3f</value>
|
||||
<value>Redirect to the feed page after adding a subscription</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Redirect to the feed page after adding a subscription</pre></value>
|
||||
<value>##TIMESTAMP##89</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2063e830</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e732e80deed05ea46667957835b2499bb895ebe9</value>
|
||||
<value>Update the Json-RPC library and improve make-archive.sh</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update the Json-RPC library and improve make-archive.sh</pre></value>
|
||||
<value>##TIMESTAMP##88</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>208ee9dd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/871f1d1d6410403599c774ad9aa20e55c77162fc</value>
|
||||
<value>Update PicoDb and improve schema migration error handling</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update PicoDb and improve schema migration error handling</pre></value>
|
||||
<value>##TIMESTAMP##87</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3530d7cd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/d7e5cd0ad424859912fc209651494fad5c52cd34</value>
|
||||
<value>New theme: 'Hello' created by Meradoou</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>New theme: &#039;Hello&#039; created by Meradoou</pre></value>
|
||||
<value>##TIMESTAMP##86</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
178
tests/integration/datasets/fixture_feed1.xml
Normal file
178
tests/integration/datasets/fixture_feed1.xml
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>http://miniflux.net/</value>
|
||||
<value>http://miniflux.net/feed.xml</value>
|
||||
<value>Recent Miniflux Releases</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>22ca3b4f</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-21</value>
|
||||
<value>Miniflux 1.0.2 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.2.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.2" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##92</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>30d227f3</value>
|
||||
<value>http://miniflux.net/news.html#2013-07-22</value>
|
||||
<value>Miniflux 1.0.10 is released!</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.10.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.10" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##97</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>4b2dbd17</value>
|
||||
<value>http://miniflux.net/news.html#2013-03-26</value>
|
||||
<value>Miniflux 1.0.3 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.3.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.3" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##93</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>51b4239b</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-12</value>
|
||||
<value>Miniflux 1.0.6 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.6.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.6" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##94</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7c6afaa5</value>
|
||||
<value>http://miniflux.net/news.html#2014-01-02</value>
|
||||
<value>Miniflux 1.1.1 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.1.1.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.1.1" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul><p>Major improvements:</p>
|
||||
<ul><li>New theme: Copper (By the contributor Nicolas Dewaele)</li>
|
||||
<li>Display a message next to a feed when there is a parsing error</li>
|
||||
<li>Change default value of autoflush to 15 days if not set to avoid large database</li>
|
||||
<li>Add autoflush value &quot;immediately&quot;</li>
|
||||
<li>Add an option to choose where to be redirected when there is nothing to read</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##99</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>7cb2809d</value>
|
||||
<value>http://miniflux.net/news.html#2013-09-02</value>
|
||||
<value>Miniflux 1.0.11 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.11.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.11" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##98</value>
|
||||
<value>unread</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9b20eb66</value>
|
||||
<value>http://miniflux.net/news.html#2013-04-30</value>
|
||||
<value>Miniflux 1.0.7 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.7.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.html#v1.0.7" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##95</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>9fa78b54</value>
|
||||
<value>http://miniflux.net/news.html#2013-06-02</value>
|
||||
<value>Miniflux 1.0.8 is released</value>
|
||||
<value></value>
|
||||
<value><ul><li><a href="http://miniflux.net/miniflux-1.0.8.zip" rel="noreferrer" target="_blank" >Download archive</a></li>
|
||||
<li><a href="http://miniflux.net/changes.htm#v1.0.8" rel="noreferrer" target="_blank" >ChangeLog</a></li>
|
||||
</ul></value>
|
||||
<value>##TIMESTAMP##96</value>
|
||||
<value>read</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
99
tests/integration/datasets/fixture_feed2.xml
Normal file
99
tests/integration/datasets/fixture_feed2.xml
Normal file
@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="feeds">
|
||||
<column>id</column>
|
||||
<column>site_url</column>
|
||||
<column>feed_url</column>
|
||||
<column>title</column>
|
||||
<column>last_modified</column>
|
||||
<column>etag</column>
|
||||
<column>last_checked</column>
|
||||
<column>enabled</column>
|
||||
<column>download_content</column>
|
||||
<column>parsing_error</column>
|
||||
<column>rtl</column>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master</value>
|
||||
<value>https://github.com/fguillot/miniflux/commits/master.atom</value>
|
||||
<value>Recent Commits to miniflux:master</value>
|
||||
<null />
|
||||
<null />
|
||||
<null />
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
<value>0</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="items">
|
||||
<column>id</column>
|
||||
<column>url</column>
|
||||
<column>title</column>
|
||||
<column>author</column>
|
||||
<column>content</column>
|
||||
<column>updated</column>
|
||||
<column>status</column>
|
||||
<column>feed_id</column>
|
||||
<column>bookmark</column>
|
||||
<column>enclosure</column>
|
||||
<column>enclosure_type</column>
|
||||
<column>language</column>
|
||||
<row>
|
||||
<value>1f4670bf</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e1b22f2d3592d653d4c22ce5f137bb1e0ae5dd3f</value>
|
||||
<value>Redirect to the feed page after adding a subscription</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Redirect to the feed page after adding a subscription</pre></value>
|
||||
<value>##TIMESTAMP##89</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2063e830</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/e732e80deed05ea46667957835b2499bb895ebe9</value>
|
||||
<value>Update the Json-RPC library and improve make-archive.sh</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update the Json-RPC library and improve make-archive.sh</pre></value>
|
||||
<value>##TIMESTAMP##88</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>208ee9dd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/871f1d1d6410403599c774ad9aa20e55c77162fc</value>
|
||||
<value>Update PicoDb and improve schema migration error handling</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>Update PicoDb and improve schema migration error handling</pre></value>
|
||||
<value>##TIMESTAMP##87</value>
|
||||
<value>unread</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3530d7cd</value>
|
||||
<value>https://github.com/fguillot/miniflux/commit/d7e5cd0ad424859912fc209651494fad5c52cd34</value>
|
||||
<value>New theme: 'Hello' created by Meradoou</value>
|
||||
<value>fguillot</value>
|
||||
<value><pre>New theme: &#039;Hello&#039; created by Meradoou</pre></value>
|
||||
<value>##TIMESTAMP##86</value>
|
||||
<value>read</value>
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>en-US</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
194
tests/integration/keyboardShortcutsTest.php
Normal file
194
tests/integration/keyboardShortcutsTest.php
Normal file
@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
require_once 'minifluxTestCase.php';
|
||||
|
||||
class keyboardShortcutTest extends minifluxTestCase
|
||||
{
|
||||
const DEFAULT_COUNTER_PAGE = 8;
|
||||
|
||||
public function setUpPage()
|
||||
{
|
||||
$url = $this->getURLPageFirstFeed();
|
||||
parent::setUpPage($url);
|
||||
|
||||
$this->basePageHeading = $this->getBasePageHeading();
|
||||
$this->expectedPageUrl = $url;
|
||||
}
|
||||
|
||||
protected function getExpectedPageTitle()
|
||||
{
|
||||
return "($this->expectedCounterPage) $this->basePageHeading";
|
||||
}
|
||||
|
||||
public function testNextItemShortcutA()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[0]);
|
||||
$this->keys($this->getShortcutNextItemA());
|
||||
|
||||
$firstIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[0]);
|
||||
$secondIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[1]);
|
||||
|
||||
$this->assertTrue($firstIsNotCurrentArticle, 'The first Article is still the current Article');
|
||||
$this->assertTrue($secondIsCurrentArticle, 'The second Article is not the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testNextItemShortcutB()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[0]);
|
||||
$this->keys($this->getShortcutNextItemB());
|
||||
|
||||
$firstIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[0]);
|
||||
$secondIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[1]);
|
||||
|
||||
$this->assertTrue($firstIsNotCurrentArticle, 'The first Article is still the current Article');
|
||||
$this->assertTrue($secondIsCurrentArticle, 'The second Article is not the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');;
|
||||
}
|
||||
|
||||
public function testPreviousItemA()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[1]);
|
||||
$this->keys($this->getShortcutPreviousItemA());
|
||||
|
||||
$firstIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[0]);
|
||||
$secondIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[1]);
|
||||
|
||||
$this->assertTrue($firstIsCurrentArticle, 'The first Article is not the current Article');
|
||||
$this->assertTrue($secondIsNotCurrentArticle, 'The second Article is still the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testPreviousItemB()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[1]);
|
||||
$this->keys($this->getShortcutPreviousItemB());
|
||||
|
||||
$firstIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[0]);
|
||||
$secondIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[1]);
|
||||
|
||||
$this->assertTrue($firstIsCurrentArticle, 'The first Article is not the current Article');
|
||||
$this->assertTrue($secondIsNotCurrentArticle, 'The second Article is still the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testNextStopsAtLastArticle()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
$lastIndex = count($articles) - 1;
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[$lastIndex]);
|
||||
$this->keys($this->getShortcutNextItemA());
|
||||
|
||||
$firstIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[0]);
|
||||
$lastIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[$lastIndex]);
|
||||
|
||||
$this->assertTrue($firstIsNotCurrentArticle, 'The first Article is still the current Article');
|
||||
$this->assertTrue($lastIsCurrentArticle, 'The last Article is not the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testPreviousStopsAtFirstArticle()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
$lastIndex = count($articles) - 1;
|
||||
|
||||
$this->setArticleAsCurrentArticle($articles[0]);
|
||||
$this->keys($this->getShortcutPreviousItemA());
|
||||
|
||||
$lastIsNotCurrentArticle = $this->waitForArticleIsNotCurrentArticle($articles[$lastIndex]);
|
||||
$firstIsCurrentArticle = $this->waitForArticleIsCurrentArticle($articles[0]);
|
||||
|
||||
$this->assertTrue($lastIsNotCurrentArticle, 'The last Article is still the current Article');
|
||||
$this->assertTrue($firstIsCurrentArticle, 'The first Article is not the current Article');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testShortcutsOnInputFiledAreDisabled()
|
||||
{
|
||||
$url = $this->getURLPagePreferences();
|
||||
|
||||
$this->url($url);
|
||||
$this->byId('form-username')->value($this->getShortcutGoToUnread());
|
||||
|
||||
$this->expectedPageUrl = $url;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testGoToBookmarks()
|
||||
{
|
||||
$this->sendKeysAndWaitForPageLoaded('gb');
|
||||
|
||||
$this->expectedCounterPage = '6';
|
||||
$this->expectedPageUrl = $this->getURLPageBookmarks();
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testGoToHistory()
|
||||
{
|
||||
$this->sendKeysAndWaitForPageLoaded('gh');
|
||||
|
||||
$this->expectedCounterPage = '6';
|
||||
$this->expectedPageUrl = $this->getURLPageHistory();
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testGoToUnread()
|
||||
{
|
||||
$this->sendKeysAndWaitForPageLoaded($this->getShortcutGoToUnread());
|
||||
|
||||
$this->expectedCounterPage = '6';
|
||||
$this->expectedCounterUnread = '6';
|
||||
$this->expectedPageUrl = $this->getURLPageUnread();
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testGoToSubscriptions()
|
||||
{
|
||||
$this->sendKeysAndWaitForPageLoaded('gs');
|
||||
|
||||
$this->expectedPageUrl = PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=feeds';
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testGoToPreferences()
|
||||
{
|
||||
$this->sendKeysAndWaitForPageLoaded('gp');
|
||||
|
||||
$this->expectedPageUrl = $this->getURLPagePreferences();
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
}
|
||||
?>
|
588
tests/integration/minifluxTestCase.php
Normal file
588
tests/integration/minifluxTestCase.php
Normal file
@ -0,0 +1,588 @@
|
||||
<?php
|
||||
|
||||
abstract class minifluxTestCase extends PHPUnit_Extensions_Selenium2TestCase
|
||||
{
|
||||
protected $basePageHeading = NULL;
|
||||
protected $expectedPageUrl = NULL;
|
||||
protected $expectedDataSet = NULL;
|
||||
protected $expectedCounterPage = NULL;
|
||||
protected $expectedCounterUnread = '';
|
||||
|
||||
protected $ignorePageTitle = FALSE;
|
||||
|
||||
protected static $databaseConnection = NULL;
|
||||
protected static $databaseTester = NULL;
|
||||
|
||||
private $waitTimeout = 5000;
|
||||
|
||||
public static function browsers()
|
||||
{
|
||||
return json_decode(PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BROWSERS, true);
|
||||
}
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
// trigger database fixtures onSetUp routines
|
||||
$this->getDatabaseTester('fixture_feed1', TRUE)->onSetUp();
|
||||
|
||||
// Set the base URL for the tests.
|
||||
$this->setBrowserUrl(PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL);
|
||||
}
|
||||
|
||||
public function setUpPage($url)
|
||||
{
|
||||
parent::setUpPage();
|
||||
|
||||
// (re)load the requested page
|
||||
$this->url($url);
|
||||
|
||||
// check if login is need and login
|
||||
$elements = $this->elements($this->using('css selector')->value('body#login-page'));
|
||||
|
||||
if (count($elements) === 1) {
|
||||
$this->url('?action=select-db&database='.DB_FILENAME);
|
||||
|
||||
$this->byId('form-username')->click();
|
||||
$this->keys('admin');
|
||||
$this->byId('form-password')->click();
|
||||
$this->keys('admin');
|
||||
$this->byTag('form')->submit();
|
||||
|
||||
$this->url($url);
|
||||
}
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
static::$databaseConnection = NULL;
|
||||
static::$databaseTester = NULL;
|
||||
}
|
||||
|
||||
protected function assertPostConditions()
|
||||
{
|
||||
// counter exists on every page
|
||||
$this->assertEquals($this->expectedCounterPage, $this->getCounterPage(), 'page-counter differ from expectation');
|
||||
$this->assertEquals($this->expectedCounterUnread, $this->getCounterUnread(), 'unread counter differ from expectation');
|
||||
|
||||
// url has not been changed (its likely that everything was done via javascript then)
|
||||
$this->assertEquals($this->expectedPageUrl, $this->url(), 'URL has been changed.');
|
||||
|
||||
// some tests switch to a page where no counter exists and the expected
|
||||
// pagetitle doesn't match to definition.
|
||||
if ($this->ignorePageTitle === FALSE) {
|
||||
//remove LEFT-TO-RIGHT MARK char from string as the webdriver does it when using text() on the page <h[1|2|3]>
|
||||
$pagetitle = preg_replace('/\x{200E}/u', '', $this->title());
|
||||
$this->assertEquals($this->getExpectedPageTitle(), $pagetitle, 'page title differ from expectation');
|
||||
}
|
||||
|
||||
// assert that the current database matches the expected database
|
||||
$expectedDataSetFiltered = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($this->expectedDataSet);
|
||||
$expectedDataSetFiltered->addIncludeTables(array('items'));
|
||||
$expectedDataSetFiltered->setExcludeColumnsForTable('items', array('updated'));
|
||||
|
||||
// TODO: changes row order, why?
|
||||
//$actualDataSet = $this->getConnection()->createDataSet();
|
||||
$actualDataSet = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
|
||||
$actualDataSet->addTable('items', 'SELECT * FROM items');
|
||||
$actualDataSetFiltered = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($actualDataSet);
|
||||
$actualDataSetFiltered->setExcludeColumnsForTable('items', array('updated'));
|
||||
|
||||
PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expectedDataSetFiltered, $actualDataSetFiltered, 'Unexpected changes in database');
|
||||
}
|
||||
|
||||
protected function getDataSet($dataSetFile, $appendFeed2 = TRUE)
|
||||
{
|
||||
$compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet();
|
||||
|
||||
$ds1 = new PHPUnit_Extensions_Database_DataSet_XmlDataSet(dirname(__FILE__).DIRECTORY_SEPARATOR.'datasets'.DIRECTORY_SEPARATOR.$dataSetFile.'.xml');
|
||||
$compositeDs->addDataSet($ds1);
|
||||
|
||||
if ($appendFeed2) {
|
||||
// feed2 should be normaly untouched
|
||||
$ds2 = new PHPUnit_Extensions_Database_DataSet_XmlDataSet(dirname(__FILE__).DIRECTORY_SEPARATOR.'datasets'.DIRECTORY_SEPARATOR.'fixture_feed2.xml');
|
||||
$compositeDs->addDataSet($ds2);
|
||||
}
|
||||
|
||||
return $compositeDs;
|
||||
}
|
||||
|
||||
protected function getConnection()
|
||||
{
|
||||
if (is_null(static::$databaseConnection)) {
|
||||
// let Miniflux setup the database
|
||||
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'common.php';
|
||||
|
||||
if (!ENABLE_MULTIPLE_DB) {
|
||||
throw new Exception('Enable multiple databases support to run the tests!');
|
||||
}
|
||||
|
||||
$picoDb = new PicoDb\Database(array(
|
||||
'driver' => 'sqlite',
|
||||
'filename' => \Model\Database\get_path(),
|
||||
));
|
||||
|
||||
$picoDb->schema()->check(Schema\VERSION);
|
||||
|
||||
// make the database world writeable, maybe the current
|
||||
// user != webserver user
|
||||
chmod(\Model\Database\get_path(), 0666);
|
||||
|
||||
// get pdo object
|
||||
$pdo = $picoDb->getConnection();
|
||||
|
||||
// disable fsync! its awefull slow without transactions and I found
|
||||
// no way to use setDataSet function with transactions
|
||||
$pdo->exec("pragma synchronous = off;");
|
||||
|
||||
static::$databaseConnection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo, 'sqlite');
|
||||
}
|
||||
|
||||
return static::$databaseConnection;
|
||||
}
|
||||
|
||||
protected function getDatabaseTester($dataSetFile, $appendFeed2)
|
||||
{
|
||||
if (is_null(static::$databaseTester)) {
|
||||
$tester = new PHPUnit_Extensions_Database_DefaultTester($this->getConnection());
|
||||
|
||||
// article/feed import on database->onSetUp();
|
||||
$tester->setSetUpOperation(PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT());
|
||||
$dataset = $this->getDataSet($dataSetFile, $appendFeed2);
|
||||
$rdataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset);
|
||||
$rdataset->addSubStrReplacement('##TIMESTAMP##', substr((string)(time()-100), 0, -2));
|
||||
$tester->setDataSet($rdataset);
|
||||
|
||||
static::$databaseTester = $tester;
|
||||
}
|
||||
|
||||
return static::$databaseTester;
|
||||
}
|
||||
|
||||
private function getCounterUnread()
|
||||
{
|
||||
$value = $this->element($this->using('id')->value('nav-counter'))->text();
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function getCounterPage()
|
||||
{
|
||||
$value = NULL;
|
||||
|
||||
$elements = $this->elements($this->using('id')->value('page-counter'));
|
||||
|
||||
if (count($elements) === 1) {
|
||||
$value = $elements[0]->text();
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function waitForElementVisibility($element, $visible)
|
||||
{
|
||||
// return false in case of timeout
|
||||
try {
|
||||
$value = $this->waitUntil(function() use($element, $visible) {
|
||||
// a "No such Element" or "Stale Element Reference" exception is
|
||||
// valid if an object should disappear
|
||||
try {
|
||||
$displaySize = $element->size();
|
||||
|
||||
if ((($visible === TRUE) && ($element->displayed() && $displaySize['height']>0 && $displaySize['width']>0))
|
||||
|| (($visible === FALSE) && ($element->displayed() === FALSE || $displaySize['height']=0 || $displaySize['width']=0))) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
|
||||
|
||||
$noSuchElement = ($e->getCode() === PHPUnit_Extensions_Selenium2TestCase_WebDriverException::NoSuchElement
|
||||
|| $e->getCode() === PHPUnit_Extensions_Selenium2TestCase_WebDriverException::StaleElementReference);
|
||||
|
||||
if (($visible === FALSE) && ($noSuchElement)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}, $this->waitTimeout);
|
||||
}
|
||||
catch(PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
|
||||
if ($e->getCode() === PHPUnit_Extensions_Selenium2TestCase_WebDriverException::Timeout) {
|
||||
return FALSE;
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function waitForElementCountByCssSelector($cssSelector, $elementCount)
|
||||
{
|
||||
// return false in case of timeout
|
||||
try {
|
||||
// Workaround for PHP < 5.4
|
||||
$CI = $this;
|
||||
|
||||
$value = $this->waitUntil(function() use($cssSelector, $elementCount, $CI) {
|
||||
$elements = $CI->elements($CI->using('css selector')->value($cssSelector));
|
||||
|
||||
if (count($elements) === $elementCount) {
|
||||
return TRUE;
|
||||
}
|
||||
}, $this->waitTimeout);
|
||||
}
|
||||
catch(PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
|
||||
if ($e->getCode() === PHPUnit_Extensions_Selenium2TestCase_WebDriverException::Timeout) {
|
||||
return FALSE;
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function waitForElementAttributeHasValue($element, $attribute, $attributeValue, $invertMatch = FALSE)
|
||||
{
|
||||
// return false in case of timeout
|
||||
try {
|
||||
$value = $this->waitUntil(function() use($element, $attribute, $attributeValue, $invertMatch) {
|
||||
$attributeHasValue = ($element->attribute($attribute) === $attributeValue);
|
||||
|
||||
if (($attributeHasValue && !$invertMatch) || (!$attributeHasValue && $invertMatch)) {
|
||||
return TRUE;
|
||||
}
|
||||
}, $this->waitTimeout);
|
||||
}
|
||||
catch(PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
|
||||
if ($e->getCode() === PHPUnit_Extensions_Selenium2TestCase_WebDriverException::Timeout) {
|
||||
return FALSE;
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function waitForIconMarkRead($article, $visible)
|
||||
{
|
||||
$icon = $article->elements($article->using('css selector')->value('span.read-icon'));
|
||||
|
||||
$value = $this->waitForElementVisibility($icon[0], $visible);
|
||||
return $value;
|
||||
}
|
||||
|
||||
private function waitForIconBookmark($article, $visible)
|
||||
{
|
||||
$icon = $article->elements($article->using('css selector')->value('span.bookmark-icon'));
|
||||
|
||||
$value = $this->waitForElementVisibility($icon[0], $visible);
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getBasePageHeading()
|
||||
{
|
||||
/*
|
||||
* WORKAROUND: Its not possible to get an elements text content without
|
||||
* the text of its childs. Thats why we have to differ between
|
||||
* pageheadings with counter and without counter.
|
||||
*/
|
||||
|
||||
// text of its childs
|
||||
$pageHeading = $this->byCssSelector('div.page-header > h2:first-child')->text();
|
||||
|
||||
// Some PageHeadings have a counter included
|
||||
$innerHeadingElements = $this->elements($this->using('css selector')->value('div.page-header > h2:first-child *'));
|
||||
|
||||
if (count($innerHeadingElements) > 0)
|
||||
{
|
||||
$innerHeading = $innerHeadingElements[0]->text();
|
||||
$pageHeading = substr($pageHeading, 0, (strlen($innerHeading) * -1));
|
||||
}
|
||||
|
||||
return $pageHeading;
|
||||
}
|
||||
|
||||
public function getURLPageUnread()
|
||||
{
|
||||
return PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=unread';
|
||||
}
|
||||
|
||||
public function getURLPageBookmarks()
|
||||
{
|
||||
return PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=bookmarks';
|
||||
}
|
||||
|
||||
public function getURLPageHistory()
|
||||
{
|
||||
return PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=history';
|
||||
}
|
||||
|
||||
public function getURLPageFirstFeed()
|
||||
{
|
||||
return PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=feed-items&feed_id=1';
|
||||
}
|
||||
|
||||
public function getURLPagePreferences()
|
||||
{
|
||||
return PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=config';
|
||||
}
|
||||
|
||||
public function getShortcutNextItemA()
|
||||
{
|
||||
return 'n';
|
||||
}
|
||||
|
||||
public function getShortcutNextItemB()
|
||||
{
|
||||
return 'j';
|
||||
}
|
||||
|
||||
public function getShortcutPreviousItemA()
|
||||
{
|
||||
return 'p';
|
||||
}
|
||||
|
||||
public function getShortcutPreviousItemB()
|
||||
{
|
||||
return 'k';
|
||||
}
|
||||
|
||||
public function getShortcutToogleReadStatus()
|
||||
{
|
||||
return 'm';
|
||||
}
|
||||
|
||||
public function getShortcutToogleBookmarkStatus()
|
||||
{
|
||||
return 'f';
|
||||
}
|
||||
|
||||
public function getShortcutGoToUnread()
|
||||
{
|
||||
return 'gu';
|
||||
}
|
||||
|
||||
public function getArticles()
|
||||
{
|
||||
$cssSelector = 'article';
|
||||
|
||||
$articles = $this->elements($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getArticlesUnread()
|
||||
{
|
||||
$cssSelector = 'article[data-item-status="unread"]';
|
||||
|
||||
$articles = $this->elements($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getArticlesRead()
|
||||
{
|
||||
$cssSelector = 'article[data-item-status="read"]';
|
||||
|
||||
$articles = $this->elements($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getArticlesNotBookmarked()
|
||||
{
|
||||
$cssSelector = 'article[data-item-bookmark="0"]';
|
||||
|
||||
$articles = $this->elements($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getArticlesNotFromFeedOne()
|
||||
{
|
||||
$cssSelector = 'article:not(.feed-1)';
|
||||
|
||||
$articles = $this->elements($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getArticleUnreadNotBookmarked()
|
||||
{
|
||||
$cssSelector = 'article[data-item-id="7c6afaa5"]';
|
||||
|
||||
$article = $this->element($this->using('css selector')->value($cssSelector));
|
||||
return $article;
|
||||
}
|
||||
|
||||
public function getArticleReadNotBookmarked()
|
||||
{
|
||||
$cssSelector = 'article[data-item-id="9b20eb66"]';
|
||||
|
||||
$article = $this->element($this->using('css selector')->value($cssSelector));
|
||||
return $article;
|
||||
}
|
||||
|
||||
public function getArticleUnreadBookmarked()
|
||||
{
|
||||
$cssSelector = 'article[data-item-id="7cb2809d"]';
|
||||
|
||||
$article = $this->element($this->using('css selector')->value($cssSelector));
|
||||
return $article;
|
||||
}
|
||||
|
||||
public function getArticleReadBookmarked()
|
||||
{
|
||||
$cssSelector = 'article[data-item-id="9fa78b54"]';
|
||||
|
||||
$articles = $this->element($this->using('css selector')->value($cssSelector));
|
||||
return $articles;
|
||||
}
|
||||
|
||||
public function getLinkReadStatusToogle($article)
|
||||
{
|
||||
$link = $article->element($article->using('css selector')->value('a.mark'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkBookmarkStatusToogle($article)
|
||||
{
|
||||
$link = $article->element($article->using('css selector')->value('a.bookmark'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkRemove($article)
|
||||
{
|
||||
$link = $article->element($article->using('css selector')->value('a.delete'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkFeedMarkReadHeader()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('div.page-header a[data-action="mark-feed-read"]'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkFeedMarkReadBottom()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('div#bottom-menu a[data-action="mark-feed-read"]'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkMarkAllReadHeader()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('div.page-header a[data-action="mark-all-read"]'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkMarkAllReadBottom()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('div#bottom-menu a[data-action="mark-all-read"]'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkFlushHistory()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('div.page-header a[href="?action=confirm-flush-history"]'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function getLinkDestructive()
|
||||
{
|
||||
$link = $this->element($this->using('css selector')->value('a.btn-red'));
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function waitForArticleIsCurrentArticle($article)
|
||||
{
|
||||
$isCurrent = $this->waitForElementAttributeHasValue($article, 'id', 'current-item');
|
||||
return $isCurrent;
|
||||
}
|
||||
|
||||
public function waitForArticleIsNotCurrentArticle($article)
|
||||
{
|
||||
$isCurrent = $this->waitForElementAttributeHasValue($article, 'id', 'current-item', TRUE);
|
||||
return $isCurrent;
|
||||
}
|
||||
|
||||
public function waitForIconMarkReadVisible($article)
|
||||
{
|
||||
$visible = $this->waitForIconMarkRead($article, TRUE);
|
||||
return $visible;
|
||||
}
|
||||
|
||||
public function waitForIconMarkReadInvisible($article)
|
||||
{
|
||||
$invisible = $this->waitForIconMarkRead($article, FALSE);
|
||||
return $invisible;
|
||||
}
|
||||
|
||||
public function waitForIconBookmarkVisible($article)
|
||||
{
|
||||
$visible = $this->waitForIconBookmark($article, TRUE);
|
||||
return $visible;
|
||||
}
|
||||
|
||||
public function waitForIconBookmarkInvisible($article)
|
||||
{
|
||||
$invisible = $this->waitForIconBookmark($article, FALSE);
|
||||
return $invisible;
|
||||
}
|
||||
|
||||
public function waitForArticleInvisible($article)
|
||||
{
|
||||
$invisible = $this->waitForElementVisibility($article, FALSE);
|
||||
return $invisible;
|
||||
}
|
||||
|
||||
public function waitForArticlesMarkRead()
|
||||
{
|
||||
$cssSelector = 'article[data-item-status="unread"]';
|
||||
|
||||
$read = $this->waitForElementCountByCssSelector($cssSelector, 0);
|
||||
return $read;
|
||||
}
|
||||
|
||||
public function waitForAlert()
|
||||
{
|
||||
$cssSelector = 'p.alert';
|
||||
|
||||
$visible = $this->waitForElementCountByCssSelector($cssSelector, 1);
|
||||
return $visible;
|
||||
}
|
||||
|
||||
public function sendKeysAndWaitForPageLoaded($keys)
|
||||
{
|
||||
$this->keys($keys);
|
||||
|
||||
// Workaround for PHP < 5.4
|
||||
$CI = $this;
|
||||
|
||||
$this->waitUntil(function() use($CI) {
|
||||
$readyState = $CI->execute(array(
|
||||
'script' => 'return document.readyState;',
|
||||
'args' => array()
|
||||
));
|
||||
|
||||
if ($readyState === 'complete') {
|
||||
return TRUE;
|
||||
}
|
||||
}, $this->waitTimeout);
|
||||
}
|
||||
|
||||
public function setArticleAsCurrentArticle($article)
|
||||
{
|
||||
$script = 'document.getElementById("' .$article->attribute('id') .'").id = "current-item";'
|
||||
. 'return true';
|
||||
|
||||
$this->execute(array(
|
||||
'script' => $script,
|
||||
'args' => array()
|
||||
));
|
||||
|
||||
$result = $this->waitForArticleIsCurrentArticle($article);
|
||||
if ($result === FALSE) {
|
||||
throw new Exception('the article could not be set as current article.');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
201
tests/integration/pageBookmarksTest.php
Normal file
201
tests/integration/pageBookmarksTest.php
Normal file
@ -0,0 +1,201 @@
|
||||
<?php
|
||||
|
||||
require_once 'minifluxTestCase.php';
|
||||
|
||||
class pageBookmarksTest extends minifluxTestCase
|
||||
{
|
||||
const DEFAULT_COUNTER_PAGE = 6;
|
||||
|
||||
public function setUpPage()
|
||||
{
|
||||
$url = $this->getURLPageBookmarks();
|
||||
parent::setUpPage($url);
|
||||
|
||||
$this->basePageHeading = $this->getBasePageHeading();
|
||||
$this->expectedPageUrl = $url;
|
||||
}
|
||||
|
||||
public function getExpectedPageTitle()
|
||||
{
|
||||
return "$this->basePageHeading ($this->expectedCounterPage)";
|
||||
}
|
||||
|
||||
public function testItemsFromAllFeeds()
|
||||
{
|
||||
$articles = $this->getArticlesNotFromFeedOne();
|
||||
$this->assertNotEmpty($articles, 'no articles from other feeds found');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testOnlyBookmarkedArticles()
|
||||
{
|
||||
$articles = $this->getArticlesNotBookmarked();
|
||||
$this->assertEmpty($articles, 'found not bookmarked articles.');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testRemoveReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRedirectWithZeroArticles()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
|
||||
foreach($articles as $article) {
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$this->waitForArticleInvisible($article);
|
||||
}
|
||||
|
||||
$visible = $this->waitForAlert();
|
||||
$this->assertTrue($visible, 'alert box did not appear');
|
||||
|
||||
$this->expectedDataSet = $this->getDataSet('expected_NoBookmarkedArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
}
|
||||
?>
|
356
tests/integration/pageFirstFeedTest.php
Normal file
356
tests/integration/pageFirstFeedTest.php
Normal file
@ -0,0 +1,356 @@
|
||||
<?php
|
||||
|
||||
require_once 'minifluxTestCase.php';
|
||||
|
||||
class pageFirstFeedTest extends minifluxTestCase
|
||||
{
|
||||
const DEFAULT_COUNTER_PAGE = 8;
|
||||
|
||||
public function setUpPage()
|
||||
{
|
||||
$url = $this->getURLPageFirstFeed();
|
||||
parent::setUpPage($url);
|
||||
|
||||
$this->basePageHeading = $this->getBasePageHeading();
|
||||
$this->expectedPageUrl = $url;
|
||||
}
|
||||
|
||||
public function getExpectedPageTitle()
|
||||
{
|
||||
return "($this->expectedCounterPage) $this->basePageHeading";
|
||||
}
|
||||
|
||||
public function testOnlyItemsFromFirstFeed()
|
||||
{
|
||||
$articles = $this->getArticlesNotFromFeedOne();
|
||||
$this->assertEmpty($articles, 'found articles from other feeds on page for first feed.');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testMarkReadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadNotBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForIconMarkReadVisible($article);
|
||||
$this->assertTrue($visible, 'read icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadNotBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$invisible = $this->waitForIconMarkReadInvisible($article);
|
||||
$this->assertTrue($invisible, 'read icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkReadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkReadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkUnreadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkUnreadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testRemoveReadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveUnreadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkFeedReadHeaderLink()
|
||||
{
|
||||
$link = $this->getLinkFeedMarkReadHeader();
|
||||
$link->click();
|
||||
|
||||
$read = $this->waitForArticlesMarkRead();
|
||||
$this->assertTrue($read, 'there are still unread articles');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkFeedRead');
|
||||
}
|
||||
|
||||
public function testMarkFeedReadBottomLink()
|
||||
{
|
||||
$link = $this->getLinkFeedMarkReadBottom();
|
||||
$link->click();
|
||||
|
||||
$read = $this->waitForArticlesMarkRead();
|
||||
$this->assertTrue($read, 'there are still unread articles');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkFeedRead');
|
||||
}
|
||||
|
||||
public function testRedirectWithZeroArticles()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
$this->assertGreaterThanOrEqual(1, count($articles), 'no articles found');
|
||||
|
||||
foreach($articles as $article) {
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$this->waitForArticleInvisible($article);
|
||||
}
|
||||
|
||||
$visible = $this->waitForAlert();
|
||||
$this->assertTrue($visible, 'alert box did not appear');
|
||||
|
||||
$this->expectedDataSet = $this->getDataSet('expected_FirstFeedAllRemoved');
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
}
|
||||
?>
|
215
tests/integration/pageHistoryTest.php
Normal file
215
tests/integration/pageHistoryTest.php
Normal file
@ -0,0 +1,215 @@
|
||||
<?php
|
||||
|
||||
require_once 'minifluxTestCase.php';
|
||||
|
||||
class pageHistoryTest extends minifluxTestCase
|
||||
{
|
||||
const DEFAULT_COUNTER_PAGE = 6;
|
||||
|
||||
public function setUpPage()
|
||||
{
|
||||
$url = $this->getURLPageHistory();
|
||||
parent::setUpPage($url);
|
||||
|
||||
$this->basePageHeading = $this->getBasePageHeading();
|
||||
$this->expectedPageUrl = $url;
|
||||
}
|
||||
|
||||
public function getExpectedPageTitle()
|
||||
{
|
||||
return "$this->basePageHeading ($this->expectedCounterPage)";
|
||||
}
|
||||
|
||||
public function testItemsFromAllFeeds()
|
||||
{
|
||||
$articles = $this->getArticlesNotFromFeedOne();
|
||||
$this->assertNotEmpty($articles, 'no articles from other feeds found');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testOnlyReadArticles()
|
||||
{
|
||||
$articles = $this->getArticlesUnread();
|
||||
$this->assertEmpty($articles, 'found unread articles.');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testMarkUnreadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadNotBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkUnreadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkReadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkReadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkReadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle');
|
||||
}
|
||||
|
||||
public function testRemoveReadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleReadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testFlushAllKeepsBookmarkedAndUnread()
|
||||
{
|
||||
$link = $this->getLinkFlushHistory();
|
||||
$link->click();
|
||||
|
||||
$destructiveLink = $this->getLinkDestructive();
|
||||
$destructiveLink->click();
|
||||
|
||||
$this->expectedCounterPage = 3;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_NoReadNotBookmarkedArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testRedirectWithZeroArticles()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
$this->assertGreaterThanOrEqual(1, count($articles), 'no articles found');
|
||||
|
||||
foreach($articles as $article) {
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$this->waitForArticleInvisible($article);
|
||||
}
|
||||
|
||||
$visible = $this->waitForAlert();
|
||||
$this->assertTrue($visible, 'alert box did not appear');
|
||||
|
||||
$this->expectedDataSet = $this->getDataSet('expected_NoReadArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
}
|
||||
?>
|
246
tests/integration/pageUnreadTest.php
Normal file
246
tests/integration/pageUnreadTest.php
Normal file
@ -0,0 +1,246 @@
|
||||
<?php
|
||||
|
||||
require_once 'minifluxTestCase.php';
|
||||
|
||||
class pageUnreadTest extends minifluxTestCase
|
||||
{
|
||||
const DEFAULT_COUNTER_PAGE = 6;
|
||||
const DEFAULT_COUNTER_UNREAD = 6;
|
||||
|
||||
public function setUpPage()
|
||||
{
|
||||
$url = $this->getURLPageUnread();
|
||||
parent::setUpPage($url);
|
||||
|
||||
$this->expectedPageUrl = $url;
|
||||
}
|
||||
|
||||
// TODO: Miniflux Title could be localized
|
||||
public function getExpectedPageTitle()
|
||||
{
|
||||
return "Miniflux ($this->expectedCounterPage)";
|
||||
}
|
||||
|
||||
public function testItemsFromAllFeeds()
|
||||
{
|
||||
$articles = $this->getArticlesNotFromFeedOne();
|
||||
$this->assertNotEmpty($articles, 'no articles from other feeds found');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testOnlyUnreadArticles()
|
||||
{
|
||||
$articles = $this->getArticlesRead();
|
||||
$this->assertEmpty($articles, 'found read articles.');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_feed1');
|
||||
}
|
||||
|
||||
public function testMarkReadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadNotBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkReadBookmarkedArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleReadStatus());
|
||||
|
||||
$visible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($visible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkUnreadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testBookmarkUnreadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$visible = $this->waitForIconBookmarkVisible($article);
|
||||
$this->assertTrue($visible, 'bookmark icon is not visible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkBookmarkStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testUnbookmarkUnreadArticleKeyboard()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$this->setArticleAsCurrentArticle($article);
|
||||
$this->keys($this->getShortcutToogleBookmarkStatus());
|
||||
|
||||
$invisible = $this->waitForIconBookmarkInvisible($article);
|
||||
$this->assertTrue($invisible, 'bookmark icon is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle');
|
||||
}
|
||||
|
||||
public function testRemoveUnreadNotBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadNotBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveUnreadNotBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testRemoveUnreadBookmarkedArticleLink()
|
||||
{
|
||||
$article = $this->getArticleUnreadBookmarked();
|
||||
|
||||
$link = $this->getLinkRemove($article);
|
||||
$link->click();
|
||||
|
||||
$invisible = $this->waitForArticleInvisible($article);
|
||||
$this->assertTrue($invisible, 'article is is not invisible');
|
||||
|
||||
$this->expectedCounterPage = static::DEFAULT_COUNTER_PAGE - 1;
|
||||
$this->expectedCounterUnread = static::DEFAULT_COUNTER_UNREAD - 1;
|
||||
$this->expectedDataSet = $this->getDataSet('expected_RemoveUnreadBookmarkedArticle');
|
||||
}
|
||||
|
||||
public function testMarkAllReadHeaderLink()
|
||||
{
|
||||
$link = $this->getLinkMarkAllReadHeader();
|
||||
$link->click();
|
||||
|
||||
$read = $this->waitForArticlesMarkRead();
|
||||
$this->assertTrue($read, 'there are still unread articles');
|
||||
|
||||
$this->expectedCounterUnread = '';
|
||||
$this->expectedPageUrl = PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=feeds¬hing_to_read=1';
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_OnlyReadArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testMarkAllReadBottomLink()
|
||||
{
|
||||
$link = $this->getLinkMarkAllReadBottom();
|
||||
$link->click();
|
||||
|
||||
$read = $this->waitForArticlesMarkRead();
|
||||
$this->assertTrue($read, 'there are still unread articles');
|
||||
|
||||
$this->expectedCounterUnread = '';
|
||||
$this->expectedPageUrl = PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=feeds¬hing_to_read=1';
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_OnlyReadArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
|
||||
public function testRedirectWithZeroArticles()
|
||||
{
|
||||
$articles = $this->getArticles();
|
||||
$this->assertGreaterThanOrEqual(1, count($articles), 'no articles found');
|
||||
|
||||
foreach($articles as $article) {
|
||||
$link = $this->getLinkReadStatusToogle($article);
|
||||
$link->click();
|
||||
|
||||
$this->waitForArticleInvisible($article);
|
||||
}
|
||||
|
||||
$visible = $this->waitForAlert();
|
||||
$this->assertTrue($visible, 'alert box did not appear');
|
||||
|
||||
$this->expectedCounterUnread = '';
|
||||
$this->expectedPageUrl = PHPUNIT_TESTSUITE_EXTENSION_SELENIUM_BASEURL.'?action=feeds¬hing_to_read=1';
|
||||
$this->expectedDataSet = $this->getDataSet('fixture_OnlyReadArticles', FALSE);
|
||||
|
||||
$this->ignorePageTitle = TRUE;
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Reference in New Issue
Block a user