aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/README.md17
-rw-r--r--tests/app/Models/CategoryTest.php12
-rw-r--r--tests/app/Models/FeedDAOTest.php2
-rw-r--r--tests/app/Models/SearchTest.php77
-rw-r--r--tests/app/Models/UserQueryTest.php36
-rw-r--r--tests/app/Utils/dotNotationUtilTest.php8
-rw-r--r--tests/cli/CliOptionsParserTest.php129
-rw-r--r--tests/cli/i18n/I18nCompletionValidatorTest.php2
-rw-r--r--tests/cli/i18n/I18nUsageValidatorTest.php2
-rw-r--r--tests/cli/i18n/I18nValueTest.php18
-rw-r--r--tests/lib/CssXPath/CssXPathTest.php2
-rw-r--r--tests/lib/Minz/MigratorTest.php42
-rw-r--r--tests/lib/PHPMailer/PHPMailerTest.php2
13 files changed, 167 insertions, 182 deletions
diff --git a/tests/README.md b/tests/README.md
index 311461d0c..59035a775 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -1,8 +1,23 @@
# FreshRSS tests
+See our [documentation about running tests](https://freshrss.github.io/FreshRSS/en/developers/03_Running_tests.html).
+
+```sh
+make test-all
+```
+
+See [`test.yml`](../.github/workflows/tests.yml) for the GitHub Actions automated tests.
+
+See [`composer.json`](../composer.json) for the different tests and versions, to be run locally.
+
+## Details about this *tests* folder
+
+Unit tests are based on [PHPUnit](https://phpunit.de/).
+Here is an example of manual install:
+
```sh
cd ./tests/
-wget -O phpunit.phar https://phar.phpunit.de/phpunit-9.phar
+wget -O phpunit.phar https://phar.phpunit.de/phpunit-10.phar
php phpunit.phar --bootstrap bootstrap.php
```
diff --git a/tests/app/Models/CategoryTest.php b/tests/app/Models/CategoryTest.php
index c9e88a32d..f9aa1a280 100644
--- a/tests/app/Models/CategoryTest.php
+++ b/tests/app/Models/CategoryTest.php
@@ -1,24 +1,24 @@
<?php
declare(strict_types=1);
+use PHPUnit\Framework\Attributes\DataProvider;
+
class CategoryTest extends PHPUnit\Framework\TestCase {
- public function test__construct_whenNoParameters_createsObjectWithDefaultValues(): void {
+ public static function test__construct_whenNoParameters_createsObjectWithDefaultValues(): void {
$category = new FreshRSS_Category();
self::assertEquals(0, $category->id());
self::assertEquals('', $category->name());
}
- /**
- * @dataProvider provideValidNames
- */
- public function test_name_whenValidValue_storesModifiedValue(string $input, string $expected): void {
+ #[DataProvider('provideValidNames')]
+ public static function test_name_whenValidValue_storesModifiedValue(string $input, string $expected): void {
$category = new FreshRSS_Category($input);
self::assertEquals($expected, $category->name());
}
/** @return array<array{string,string}> */
- public function provideValidNames(): array {
+ public static function provideValidNames(): array {
return [
['', ''],
['this string does not need trimming', 'this string does not need trimming'],
diff --git a/tests/app/Models/FeedDAOTest.php b/tests/app/Models/FeedDAOTest.php
index cd197bf9e..31cfc57f9 100644
--- a/tests/app/Models/FeedDAOTest.php
+++ b/tests/app/Models/FeedDAOTest.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
class FeedDAOTest extends PHPUnit\Framework\TestCase {
- public function test_ttl_min(): void {
+ public static function test_ttl_min(): void {
$feed = new FreshRSS_Feed('https://example.net/', false);
$feed->_ttl(-5);
self::assertEquals(-5, $feed->ttl(true));
diff --git a/tests/app/Models/SearchTest.php b/tests/app/Models/SearchTest.php
index e01830314..27943cdb2 100644
--- a/tests/app/Models/SearchTest.php
+++ b/tests/app/Models/SearchTest.php
@@ -1,13 +1,14 @@
<?php
declare(strict_types=1);
+
+use PHPUnit\Framework\Attributes\DataProvider;
+
require_once(LIB_PATH . '/lib_date.php');
class SearchTest extends PHPUnit\Framework\TestCase {
- /**
- * @dataProvider provideEmptyInput
- */
- public function test__construct_whenInputIsEmpty_getsOnlyNullValues(string $input): void {
+ #[DataProvider('provideEmptyInput')]
+ public static function test__construct_whenInputIsEmpty_getsOnlyNullValues(string $input): void {
$search = new FreshRSS_Search($input);
self::assertEquals('', $search->getRawInput());
self::assertNull($search->getIntitle());
@@ -25,7 +26,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
* Here is the description of the values
* @return array{array{''},array{' '}}
*/
- public function provideEmptyInput(): array {
+ public static function provideEmptyInput(): array {
return [
[''],
[' '],
@@ -33,11 +34,11 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideIntitleSearch
* @param array<string>|null $intitle_value
* @param array<string>|null $search_value
*/
- public function test__construct_whenInputContainsIntitle_setsIntitleProperty(string $input, ?array $intitle_value, ?array $search_value): void {
+ #[DataProvider('provideIntitleSearch')]
+ public static function test__construct_whenInputContainsIntitle_setsIntitleProperty(string $input, ?array $intitle_value, ?array $search_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($intitle_value, $search->getIntitle());
self::assertEquals($search_value, $search->getSearch());
@@ -46,7 +47,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<mixed>>
*/
- public function provideIntitleSearch(): array {
+ public static function provideIntitleSearch(): array {
return [
['intitle:word1', ['word1'], null],
['intitle:word1-word2', ['word1-word2'], null],
@@ -70,11 +71,11 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideAuthorSearch
* @param array<string>|null $author_value
* @param array<string>|null $search_value
*/
- public function test__construct_whenInputContainsAuthor_setsAuthorValue(string $input, ?array $author_value, ?array $search_value): void {
+ #[DataProvider('provideAuthorSearch')]
+ public static function test__construct_whenInputContainsAuthor_setsAuthorValue(string $input, ?array $author_value, ?array $search_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($author_value, $search->getAuthor());
self::assertEquals($search_value, $search->getSearch());
@@ -83,7 +84,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<mixed>>
*/
- public function provideAuthorSearch(): array {
+ public static function provideAuthorSearch(): array {
return [
['author:word1', ['word1'], null],
['author:word1-word2', ['word1-word2'], null],
@@ -107,11 +108,11 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideInurlSearch
* @param array<string>|null $inurl_value
* @param array<string>|null $search_value
*/
- public function test__construct_whenInputContainsInurl_setsInurlValue(string $input, ?array $inurl_value, ?array $search_value): void {
+ #[DataProvider('provideInurlSearch')]
+ public static function test__construct_whenInputContainsInurl_setsInurlValue(string $input, ?array $inurl_value, ?array $search_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($inurl_value, $search->getInurl());
self::assertEquals($search_value, $search->getSearch());
@@ -120,7 +121,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<mixed>>
*/
- public function provideInurlSearch(): array {
+ public static function provideInurlSearch(): array {
return [
['inurl:word1', ['word1'], null],
['inurl: word1', [], ['word1']],
@@ -133,10 +134,8 @@ class SearchTest extends PHPUnit\Framework\TestCase {
];
}
- /**
- * @dataProvider provideDateSearch
- */
- public function test__construct_whenInputContainsDate_setsDateValues(string $input, ?int $min_date_value, ?int $max_date_value): void {
+ #[DataProvider('provideDateSearch')]
+ public static function test__construct_whenInputContainsDate_setsDateValues(string $input, ?int $min_date_value, ?int $max_date_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($min_date_value, $search->getMinDate());
self::assertEquals($max_date_value, $search->getMaxDate());
@@ -145,7 +144,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<mixed>>
*/
- public function provideDateSearch(): array {
+ public static function provideDateSearch(): array {
return array(
array('date:2007-03-01T13:00:00Z/2008-05-11T15:30:00Z', 1172754000, 1210519800),
array('date:2007-03-01T13:00:00Z/P1Y2M10DT2H30M', 1172754000, 1210519799),
@@ -156,10 +155,8 @@ class SearchTest extends PHPUnit\Framework\TestCase {
);
}
- /**
- * @dataProvider providePubdateSearch
- */
- public function test__construct_whenInputContainsPubdate_setsPubdateValues(string $input, ?int $min_pubdate_value, ?int $max_pubdate_value): void {
+ #[DataProvider('providePubdateSearch')]
+ public static function test__construct_whenInputContainsPubdate_setsPubdateValues(string $input, ?int $min_pubdate_value, ?int $max_pubdate_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($min_pubdate_value, $search->getMinPubdate());
self::assertEquals($max_pubdate_value, $search->getMaxPubdate());
@@ -168,7 +165,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<mixed>>
*/
- public function providePubdateSearch(): array {
+ public static function providePubdateSearch(): array {
return array(
array('pubdate:2007-03-01T13:00:00Z/2008-05-11T15:30:00Z', 1172754000, 1210519800),
array('pubdate:2007-03-01T13:00:00Z/P1Y2M10DT2H30M', 1172754000, 1210519799),
@@ -180,11 +177,11 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideTagsSearch
* @param array<string>|null $tags_value
* @param array<string>|null $search_value
*/
- public function test__construct_whenInputContainsTags_setsTagsValue(string $input, ?array $tags_value, ?array $search_value): void {
+ #[DataProvider('provideTagsSearch')]
+ public static function test__construct_whenInputContainsTags_setsTagsValue(string $input, ?array $tags_value, ?array $search_value): void {
$search = new FreshRSS_Search($input);
self::assertEquals($tags_value, $search->getTags());
self::assertEquals($search_value, $search->getSearch());
@@ -193,7 +190,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
/**
* @return array<array<string|array<string>|null>>
*/
- public function provideTagsSearch(): array {
+ public static function provideTagsSearch(): array {
return [
['#word1', ['word1'], null],
['# word1', null, ['#', 'word1']],
@@ -207,14 +204,14 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideMultipleSearch
* @param array<string>|null $author_value
* @param array<string> $intitle_value
* @param array<string>|null $inurl_value
* @param array<string>|null $tags_value
* @param array<string>|null $search_value
*/
- public function test__construct_whenInputContainsMultipleKeywords_setsValues(string $input, ?array $author_value, ?int $min_date_value,
+ #[DataProvider('provideMultipleSearch')]
+ public static function test__construct_whenInputContainsMultipleKeywords_setsValues(string $input, ?array $author_value, ?int $min_date_value,
?int $max_date_value, ?array $intitle_value, ?array $inurl_value, ?int $min_pubdate_value,
?int $max_pubdate_value, ?array $tags_value, ?array $search_value): void {
$search = new FreshRSS_Search($input);
@@ -231,7 +228,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/** @return array<array<mixed>> */
- public function provideMultipleSearch(): array {
+ public static function provideMultipleSearch(): array {
return array(
array(
'author:word1 date:2007-03-01/2008-05-11 intitle:word2 inurl:word3 pubdate:2007-03-01/2008-05-11 #word4 #word5',
@@ -284,15 +281,13 @@ class SearchTest extends PHPUnit\Framework\TestCase {
);
}
- /**
- * @dataProvider provideAddOrParentheses
- */
- public function test__addOrParentheses(string $input, string $output): void {
+ #[DataProvider('provideAddOrParentheses')]
+ public static function test__addOrParentheses(string $input, string $output): void {
self::assertEquals($output, FreshRSS_BooleanSearch::addOrParentheses($input));
}
/** @return array<array{string,string}> */
- public function provideAddOrParentheses(): array {
+ public static function provideAddOrParentheses(): array {
return [
['ab', 'ab'],
['ab cd', 'ab cd'],
@@ -304,15 +299,13 @@ class SearchTest extends PHPUnit\Framework\TestCase {
];
}
- /**
- * @dataProvider provideconsistentOrParentheses
- */
- public function test__consistentOrParentheses(string $input, string $output): void {
+ #[DataProvider('provideconsistentOrParentheses')]
+ public static function test__consistentOrParentheses(string $input, string $output): void {
self::assertEquals($output, FreshRSS_BooleanSearch::consistentOrParentheses($input));
}
/** @return array<array{string,string}> */
- public function provideconsistentOrParentheses(): array {
+ public static function provideconsistentOrParentheses(): array {
return [
['ab cd ef', 'ab cd ef'],
['(ab cd ef)', '(ab cd ef)'],
@@ -332,9 +325,9 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideParentheses
* @param array<string> $values
*/
+ #[DataProvider('provideParentheses')]
public function test__parentheses(string $input, string $sql, array $values): void {
[$filterValues, $filterSearch] = FreshRSS_EntryDAOPGSQL::sqlBooleanSearch('e.', new FreshRSS_BooleanSearch($input));
self::assertEquals(trim($sql), trim($filterSearch));
@@ -342,7 +335,7 @@ class SearchTest extends PHPUnit\Framework\TestCase {
}
/** @return array<array<mixed>> */
- public function provideParentheses(): array {
+ public static function provideParentheses(): array {
return [
[
'f:1 (f:2 OR f:3 OR f:4) (f:5 OR (f:6 OR f:7))',
diff --git a/tests/app/Models/UserQueryTest.php b/tests/app/Models/UserQueryTest.php
index 828bd4276..f9577e49b 100644
--- a/tests/app/Models/UserQueryTest.php
+++ b/tests/app/Models/UserQueryTest.php
@@ -6,13 +6,13 @@ declare(strict_types=1);
*/
class UserQueryTest extends PHPUnit\Framework\TestCase {
- public function test__construct_whenAllQuery_storesAllParameters(): void {
+ public static function test__construct_whenAllQuery_storesAllParameters(): void {
$query = array('get' => 'a');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals('all', $user_query->getGetType());
}
- public function test__construct_whenFavoriteQuery_storesFavoriteParameters(): void {
+ public static function test__construct_whenFavoriteQuery_storesFavoriteParameters(): void {
$query = array('get' => 's');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals('favorite', $user_query->getGetType());
@@ -56,47 +56,47 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertEquals('feed', $user_query->getGetType());
}
- public function test__construct_whenUnknownQuery_doesStoreParameters(): void {
+ public static function test__construct_whenUnknownQuery_doesStoreParameters(): void {
$query = array('get' => 'q');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEmpty($user_query->getGetName());
self::assertEmpty($user_query->getGetType());
}
- public function test__construct_whenName_storesName(): void {
+ public static function test__construct_whenName_storesName(): void {
$name = 'some name';
$query = array('name' => $name);
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals($name, $user_query->getName());
}
- public function test__construct_whenOrder_storesOrder(): void {
+ public static function test__construct_whenOrder_storesOrder(): void {
$order = 'some order';
$query = array('order' => $order);
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals($order, $user_query->getOrder());
}
- public function test__construct_whenState_storesState(): void {
+ public static function test__construct_whenState_storesState(): void {
$state = FreshRSS_Entry::STATE_NOT_READ | FreshRSS_Entry::STATE_FAVORITE;
$query = array('state' => $state);
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals($state, $user_query->getState());
}
- public function test__construct_whenUrl_storesUrl(): void {
+ public static function test__construct_whenUrl_storesUrl(): void {
$url = 'some url';
$query = array('url' => $url);
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertEquals($url, $user_query->getUrl());
}
- public function testToArray_whenNoData_returnsEmptyArray(): void {
+ public static function testToArray_whenNoData_returnsEmptyArray(): void {
$user_query = new FreshRSS_UserQuery([], [], []);
self::assertCount(0, $user_query->toArray());
}
- public function testToArray_whenData_returnsArray(): void {
+ public static function testToArray_whenData_returnsArray(): void {
$query = array(
'get' => 's',
'name' => 'some name',
@@ -110,7 +110,7 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertEquals($query, $user_query->toArray());
}
- public function testHasSearch_whenSearch_returnsTrue(): void {
+ public static function testHasSearch_whenSearch_returnsTrue(): void {
$query = array(
'search' => 'some search',
);
@@ -118,24 +118,24 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertTrue($user_query->hasSearch());
}
- public function testHasSearch_whenNoSearch_returnsFalse(): void {
+ public static function testHasSearch_whenNoSearch_returnsFalse(): void {
$user_query = new FreshRSS_UserQuery([], [], []);
self::assertFalse($user_query->hasSearch());
}
- public function testHasParameters_whenAllQuery_returnsFalse(): void {
+ public static function testHasParameters_whenAllQuery_returnsFalse(): void {
$query = array('get' => 'a');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertFalse($user_query->hasParameters());
}
- public function testHasParameters_whenNoParameter_returnsFalse(): void {
+ public static function testHasParameters_whenNoParameter_returnsFalse(): void {
$query = array();
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertFalse($user_query->hasParameters());
}
- public function testHasParameters_whenParameter_returnTrue(): void {
+ public static function testHasParameters_whenParameter_returnTrue(): void {
$query = array('get' => 's');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertTrue($user_query->hasParameters());
@@ -153,7 +153,7 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertFalse($user_query->isDeprecated());
}
- public function testIsDeprecated_whenCategoryDoesNotExist_returnTrue(): void {
+ public static function testIsDeprecated_whenCategoryDoesNotExist_returnTrue(): void {
$query = array('get' => 'c_1');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertTrue($user_query->isDeprecated());
@@ -193,19 +193,19 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertTrue($user_query->isDeprecated());
}
- public function testIsDeprecated_whenAllQuery_returnFalse(): void {
+ public static function testIsDeprecated_whenAllQuery_returnFalse(): void {
$query = array('get' => 'a');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertFalse($user_query->isDeprecated());
}
- public function testIsDeprecated_whenFavoriteQuery_returnFalse(): void {
+ public static function testIsDeprecated_whenFavoriteQuery_returnFalse(): void {
$query = array('get' => 's');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertFalse($user_query->isDeprecated());
}
- public function testIsDeprecated_whenUnknownQuery_returnFalse(): void {
+ public static function testIsDeprecated_whenUnknownQuery_returnFalse(): void {
$query = array('get' => 'q');
$user_query = new FreshRSS_UserQuery($query, [], []);
self::assertFalse($user_query->isDeprecated());
diff --git a/tests/app/Utils/dotNotationUtilTest.php b/tests/app/Utils/dotNotationUtilTest.php
index a04ddba4f..e49220d30 100644
--- a/tests/app/Utils/dotNotationUtilTest.php
+++ b/tests/app/Utils/dotNotationUtilTest.php
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
+use PHPUnit\Framework\Attributes\DataProvider;
+
class dotNotationUtilTest extends PHPUnit\Framework\TestCase {
/**
* @return Traversable<array{array<string,mixed>,string,string}>
*/
- public function provideJsonDots(): Traversable {
+ public static function provideJsonDots(): Traversable {
$json = <<<json
{
"hello": "world",
@@ -34,10 +36,10 @@ class dotNotationUtilTest extends PHPUnit\Framework\TestCase {
}
/**
- * @dataProvider provideJsonDots
* @param array<string,mixed> $array
*/
- public function testJsonDots(array $array, string $key, string $expected): void {
+ #[DataProvider('provideJsonDots')]
+ public static function testJsonDots(array $array, string $key, string $expected): void {
$value = FreshRSS_dotNotation_Util::get($array, $key);
self::assertEquals($expected, $value);
}
diff --git a/tests/cli/CliOptionsParserTest.php b/tests/cli/CliOptionsParserTest.php
index facb5dbc5..046617721 100644
--- a/tests/cli/CliOptionsParserTest.php
+++ b/tests/cli/CliOptionsParserTest.php
@@ -52,163 +52,138 @@ final class CliOptionsOptionalAndRequiredTest extends CliOptionsParser {
class CliOptionsParserTest extends TestCase {
- public function testInvalidOptionSetWithValueReturnsError(): void {
- $result = $this->runOptionalOptions('--invalid=invalid');
-
+ public static function testInvalidOptionSetWithValueReturnsError(): void {
+ $result = self::runOptionalOptions('--invalid=invalid');
self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors);
}
- public function testInvalidOptionSetWithoutValueReturnsError(): void {
- $result = $this->runOptionalOptions('--invalid');
-
+ public static function testInvalidOptionSetWithoutValueReturnsError(): void {
+ $result = self::runOptionalOptions('--invalid');
self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors);
}
- public function testValidOptionSetWithValidValueAndInvalidOptionSetWithValueReturnsValueForValidOptionAndErrorForInvalidOption(): void {
- $result = $this->runOptionalOptions('--string=string --invalid=invalid');
-
+ public static function testValidOptionSetWithValidValueAndInvalidOptionSetWithValueReturnsValueForValidOptionAndErrorForInvalidOption(): void {
+ $result = self::runOptionalOptions('--string=string --invalid=invalid');
self::assertEquals('string', $result->string);
self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors);
}
- public function testOptionWithValueTypeOfStringSetOnceWithValidValueReturnsValueAsString(): void {
- $result = $this->runOptionalOptions('--string=string');
-
+ public static function testOptionWithValueTypeOfStringSetOnceWithValidValueReturnsValueAsString(): void {
+ $result = self::runOptionalOptions('--string=string');
self::assertEquals('string', $result->string);
}
- public function testOptionWithRequiredValueTypeOfIntSetOnceWithValidValueReturnsValueAsInt(): void {
- $result = $this->runOptionalOptions('--int=111');
-
+ public static function testOptionWithRequiredValueTypeOfIntSetOnceWithValidValueReturnsValueAsInt(): void {
+ $result = self::runOptionalOptions('--int=111');
self::assertEquals(111, $result->int);
}
- public function testOptionWithRequiredValueTypeOfBoolSetOnceWithValidValueReturnsValueAsBool(): void {
- $result = $this->runOptionalOptions('--bool=on');
-
+ public static function testOptionWithRequiredValueTypeOfBoolSetOnceWithValidValueReturnsValueAsBool(): void {
+ $result = self::runOptionalOptions('--bool=on');
self::assertEquals(true, $result->bool);
}
- public function testOptionWithValueTypeOfArrayOfStringSetOnceWithValidValueReturnsValueAsArrayOfString(): void {
- $result = $this->runOptionalOptions('--array-of-string=string');
-
+ public static function testOptionWithValueTypeOfArrayOfStringSetOnceWithValidValueReturnsValueAsArrayOfString(): void {
+ $result = self::runOptionalOptions('--array-of-string=string');
self::assertEquals(['string'], $result->arrayOfString);
}
- public function testOptionWithValueTypeOfStringSetMultipleTimesWithValidValueReturnsLastValueSetAsString(): void {
- $result = $this->runOptionalOptions('--string=first --string=second');
-
+ public static function testOptionWithValueTypeOfStringSetMultipleTimesWithValidValueReturnsLastValueSetAsString(): void {
+ $result = self::runOptionalOptions('--string=first --string=second');
self::assertEquals('second', $result->string);
}
- public function testOptionWithValueTypeOfIntSetMultipleTimesWithValidValueReturnsLastValueSetAsInt(): void {
- $result = $this->runOptionalOptions('--int=111 --int=222');
-
+ public static function testOptionWithValueTypeOfIntSetMultipleTimesWithValidValueReturnsLastValueSetAsInt(): void {
+ $result = self::runOptionalOptions('--int=111 --int=222');
self::assertEquals(222, $result->int);
}
- public function testOptionWithValueTypeOfBoolSetMultipleTimesWithValidValueReturnsLastValueSetAsBool(): void {
- $result = $this->runOptionalOptions('--bool=on --bool=off');
-
+ public static function testOptionWithValueTypeOfBoolSetMultipleTimesWithValidValueReturnsLastValueSetAsBool(): void {
+ $result = self::runOptionalOptions('--bool=on --bool=off');
self::assertEquals(false, $result->bool);
}
- public function testOptionWithValueTypeOfArrayOfStringSetMultipleTimesWithValidValueReturnsAllSetValuesAsArrayOfString(): void {
- $result = $this->runOptionalOptions('--array-of-string=first --array-of-string=second');
-
+ public static function testOptionWithValueTypeOfArrayOfStringSetMultipleTimesWithValidValueReturnsAllSetValuesAsArrayOfString(): void {
+ $result = self::runOptionalOptions('--array-of-string=first --array-of-string=second');
self::assertEquals(['first', 'second'], $result->arrayOfString);
}
- public function testOptionWithValueTypeOfIntSetWithInvalidValueReturnsAnError(): void {
- $result = $this->runOptionalOptions('--int=one');
-
+ public static function testOptionWithValueTypeOfIntSetWithInvalidValueReturnsAnError(): void {
+ $result = self::runOptionalOptions('--int=one');
self::assertEquals(['int' => 'invalid input: int must be an integer'], $result->errors);
}
- public function testOptionWithValueTypeOfBoolSetWithInvalidValuesReturnsAnError(): void {
- $result = $this->runOptionalOptions('--bool=bad');
-
+ public static function testOptionWithValueTypeOfBoolSetWithInvalidValuesReturnsAnError(): void {
+ $result = self::runOptionalOptions('--bool=bad');
self::assertEquals(['bool' => 'invalid input: bool must be a boolean'], $result->errors);
}
- public function testOptionWithValueTypeOfIntSetMultipleTimesWithValidAndInvalidValuesReturnsLastValidValueSetAsIntAndError(): void {
- $result = $this->runOptionalOptions('--int=111 --int=one --int=222 --int=two');
-
+ public static function testOptionWithValueTypeOfIntSetMultipleTimesWithValidAndInvalidValuesReturnsLastValidValueSetAsIntAndError(): void {
+ $result = self::runOptionalOptions('--int=111 --int=one --int=222 --int=two');
self::assertEquals(222, $result->int);
self::assertEquals(['int' => 'invalid input: int must be an integer'], $result->errors);
}
- public function testOptionWithValueTypeOfBoolSetMultipleTimesWithWithValidAndInvalidValuesReturnsLastValidValueSetAsBoolAndError(): void {
- $result = $this->runOptionalOptions('--bool=on --bool=good --bool=off --bool=bad');
-
+ public static function testOptionWithValueTypeOfBoolSetMultipleTimesWithWithValidAndInvalidValuesReturnsLastValidValueSetAsBoolAndError(): void {
+ $result = self::runOptionalOptions('--bool=on --bool=good --bool=off --bool=bad');
self::assertEquals(false, $result->bool);
self::assertEquals(['bool' => 'invalid input: bool must be a boolean'], $result->errors);
}
- public function testNotSetOptionWithDefaultInputReturnsDefaultInput(): void {
- $result = $this->runOptionalOptions('');
-
+ public static function testNotSetOptionWithDefaultInputReturnsDefaultInput(): void {
+ $result = self::runOptionalOptions('');
self::assertEquals('default', $result->defaultInput);
}
- public function testOptionWithDefaultInputSetWithValidValueReturnsCorrectlyTypedValue(): void {
- $result = $this->runOptionalOptions('--default-input=input');
-
+ public static function testOptionWithDefaultInputSetWithValidValueReturnsCorrectlyTypedValue(): void {
+ $result = self::runOptionalOptions('--default-input=input');
self::assertEquals('input', $result->defaultInput);
}
- public function testOptionWithOptionalValueSetWithoutValueReturnsEmptyString(): void {
- $result = $this->runOptionalOptions('--optional-value');
-
+ public static function testOptionWithOptionalValueSetWithoutValueReturnsEmptyString(): void {
+ $result = self::runOptionalOptions('--optional-value');
self::assertEquals('', $result->optionalValue);
}
- public function testOptionWithOptionalValueDefaultSetWithoutValueReturnsOptionalValueDefault(): void {
- $result = $this->runOptionalOptions('--optional-value-with-default');
-
+ public static function testOptionWithOptionalValueDefaultSetWithoutValueReturnsOptionalValueDefault(): void {
+ $result = self::runOptionalOptions('--optional-value-with-default');
self::assertEquals(true, $result->optionalValueWithDefault);
}
- public function testNotSetOptionWithOptionalValueDefaultAndDefaultInputReturnsDefaultInput(): void {
- $result = $this->runOptionalOptions('');
-
+ public static function testNotSetOptionWithOptionalValueDefaultAndDefaultInputReturnsDefaultInput(): void {
+ $result = self::runOptionalOptions('');
self::assertEquals('default', $result->defaultInputAndOptionalValueWithDefault);
}
- public function testOptionWithOptionalValueDefaultAndDefaultInputSetWithoutValueReturnsOptionalValueDefault(): void {
- $result = $this->runOptionalOptions('--default-input-and-optional-value-with-default');
-
+ public static function testOptionWithOptionalValueDefaultAndDefaultInputSetWithoutValueReturnsOptionalValueDefault(): void {
+ $result = self::runOptionalOptions('--default-input-and-optional-value-with-default');
self::assertEquals('optional', $result->defaultInputAndOptionalValueWithDefault);
}
- public function testRequiredOptionNotSetReturnsError(): void {
- $result = $this->runOptionalAndRequiredOptions('');
-
+ public static function testRequiredOptionNotSetReturnsError(): void {
+ $result = self::runOptionalAndRequiredOptions('');
self::assertEquals(['required' => 'invalid input: required cannot be empty'], $result->errors);
}
- public function testOptionSetWithDeprecatedAliasGeneratesDeprecationWarningAndReturnsValue(): void {
- $result = $this->runCommandReadingStandardError('--deprecated-string=string');
-
+ public static function testOptionSetWithDeprecatedAliasGeneratesDeprecationWarningAndReturnsValue(): void {
+ $result = self::runCommandReadingStandardError('--deprecated-string=string');
self::assertEquals('FreshRSS deprecation warning: the CLI option(s): deprecated-string are deprecated ' .
'and will be removed in a future release. Use: string instead',
$result
);
- $result = $this->runOptionalOptions('--deprecated-string=string');
-
+ $result = self::runOptionalOptions('--deprecated-string=string');
self::assertEquals('string', $result->string);
}
- public function testAlwaysReturnUsageMessageWithUsageInfoForAllOptions(): void {
- $result = $this->runOptionalAndRequiredOptions('');
-
+ public static function testAlwaysReturnUsageMessageWithUsageInfoForAllOptions(): void {
+ $result = self::runOptionalAndRequiredOptions('');
self::assertEquals('Usage: cli-parser-test.php --required=<required> [-s --string=<string>] [-i --int=<int>] [-b --bool=<bool>] [-f --flag]',
$result->usage,
);
}
- private function runOptionalOptions(string $cliOptions = ''): CliOptionsOptionalTest {
+ private static function runOptionalOptions(string $cliOptions = ''): CliOptionsOptionalTest {
$command = __DIR__ . '/cli-parser-test.php';
$className = CliOptionsOptionalTest::class;
@@ -219,7 +194,7 @@ class CliOptionsParserTest extends TestCase {
return $result;
}
- private function runOptionalAndRequiredOptions(string $cliOptions = ''): CliOptionsOptionalAndRequiredTest {
+ private static function runOptionalAndRequiredOptions(string $cliOptions = ''): CliOptionsOptionalAndRequiredTest {
$command = __DIR__ . '/cli-parser-test.php';
$className = CliOptionsOptionalAndRequiredTest::class;
@@ -230,7 +205,7 @@ class CliOptionsParserTest extends TestCase {
return $result;
}
- private function runCommandReadingStandardError(string $cliOptions = ''): string {
+ private static function runCommandReadingStandardError(string $cliOptions = ''): string {
$command = __DIR__ . '/cli-parser-test.php';
$className = CliOptionsOptionalTest::class;
diff --git a/tests/cli/i18n/I18nCompletionValidatorTest.php b/tests/cli/i18n/I18nCompletionValidatorTest.php
index bc992edbe..f16285005 100644
--- a/tests/cli/i18n/I18nCompletionValidatorTest.php
+++ b/tests/cli/i18n/I18nCompletionValidatorTest.php
@@ -42,7 +42,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase {
$validator->displayReport();
}
- public function testValidateWhenNoData(): void {
+ public static function testValidateWhenNoData(): void {
$validator = new I18nCompletionValidator([], []);
self::assertTrue($validator->validate());
self::assertEquals('', $validator->displayResult());
diff --git a/tests/cli/i18n/I18nUsageValidatorTest.php b/tests/cli/i18n/I18nUsageValidatorTest.php
index 3135cef22..1c604390f 100644
--- a/tests/cli/i18n/I18nUsageValidatorTest.php
+++ b/tests/cli/i18n/I18nUsageValidatorTest.php
@@ -42,7 +42,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase {
$validator->displayReport();
}
- public function testValidateWhenNoData(): void {
+ public static function testValidateWhenNoData(): void {
$validator = new I18nUsageValidator([], []);
self::assertTrue($validator->validate());
self::assertEquals('', $validator->displayResult());
diff --git a/tests/cli/i18n/I18nValueTest.php b/tests/cli/i18n/I18nValueTest.php
index 06d57eb08..44984d7b2 100644
--- a/tests/cli/i18n/I18nValueTest.php
+++ b/tests/cli/i18n/I18nValueTest.php
@@ -3,35 +3,35 @@ declare(strict_types=1);
require_once __DIR__ . '/../../../cli/i18n/I18nValue.php';
class I18nValueTest extends PHPUnit\Framework\TestCase {
- public function testConstructorWithoutState(): void {
+ public static function testConstructorWithoutState(): void {
$value = new I18nValue('some value');
self::assertEquals('some value', $value->getValue());
self::assertFalse($value->isIgnore());
self::assertFalse($value->isTodo());
}
- public function testConstructorWithUnknownState(): void {
+ public static function testConstructorWithUnknownState(): void {
$value = new I18nValue('some value -> unknown');
self::assertEquals('some value', $value->getValue());
self::assertFalse($value->isIgnore());
self::assertFalse($value->isTodo());
}
- public function testConstructorWithTodoState(): void {
+ public static function testConstructorWithTodoState(): void {
$value = new I18nValue('some value -> todo');
self::assertEquals('some value', $value->getValue());
self::assertFalse($value->isIgnore());
self::assertTrue($value->isTodo());
}
- public function testConstructorWithIgnoreState(): void {
+ public static function testConstructorWithIgnoreState(): void {
$value = new I18nValue('some value -> ignore');
self::assertEquals('some value', $value->getValue());
self::assertTrue($value->isIgnore());
self::assertFalse($value->isTodo());
}
- public function testClone(): void {
+ public static function testClone(): void {
$value = new I18nValue('some value');
$clonedValue = clone $value;
self::assertEquals('some value', $value->getValue());
@@ -42,21 +42,21 @@ class I18nValueTest extends PHPUnit\Framework\TestCase {
self::assertTrue($clonedValue->isTodo());
}
- public function testEqualWhenValueIsIdentical(): void {
+ public static function testEqualWhenValueIsIdentical(): void {
$value = new I18nValue('some value');
$clonedValue = clone $value;
self::assertTrue($value->equal($clonedValue));
self::assertTrue($clonedValue->equal($value));
}
- public function testEqualWhenValueIsDifferent(): void {
+ public static function testEqualWhenValueIsDifferent(): void {
$value = new I18nValue('some value');
$otherValue = new I18nValue('some other value');
self::assertFalse($value->equal($otherValue));
self::assertFalse($otherValue->equal($value));
}
- public function testStates(): void {
+ public static function testStates(): void {
$reflectionProperty = new ReflectionProperty(I18nValue::class, 'state');
$reflectionProperty->setAccessible(true);
@@ -74,7 +74,7 @@ class I18nValueTest extends PHPUnit\Framework\TestCase {
self::assertEquals('todo', $reflectionProperty->getValue($value));
}
- public function testToString(): void {
+ public static function testToString(): void {
$value = new I18nValue('some value');
self::assertEquals('some value', $value->__toString());
$value->markAsTodo();
diff --git a/tests/lib/CssXPath/CssXPathTest.php b/tests/lib/CssXPath/CssXPathTest.php
index ed92ece16..8197f5b87 100644
--- a/tests/lib/CssXPath/CssXPathTest.php
+++ b/tests/lib/CssXPath/CssXPathTest.php
@@ -3,7 +3,7 @@ declare(strict_types=1);
class CssXPathTest extends PHPUnit\Framework\TestCase
{
- public function testCssXPathTranslatorClassExists(): void {
+ public static function testCssXPathTranslatorClassExists(): void {
self::assertTrue(class_exists('Gt\\CssXPath\\Translator'));
}
}
diff --git a/tests/lib/Minz/MigratorTest.php b/tests/lib/Minz/MigratorTest.php
index 6560715da..75c6eee23 100644
--- a/tests/lib/Minz/MigratorTest.php
+++ b/tests/lib/Minz/MigratorTest.php
@@ -4,7 +4,7 @@ use PHPUnit\Framework\TestCase;
class MigratorTest extends TestCase
{
- public function testAddMigration(): void {
+ public static function testAddMigration(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', fn() => true);
@@ -15,7 +15,7 @@ class MigratorTest extends TestCase
self::assertTrue($result);
}
- public function testMigrationsIsSorted(): void {
+ public static function testMigrationsIsSorted(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('2_foo', fn() => true);
$migrator->addMigration('10_foo', fn() => true);
@@ -27,7 +27,7 @@ class MigratorTest extends TestCase
self::assertSame($expected_versions, array_keys($migrations));
}
- public function testSetAppliedVersions(): void {
+ public static function testSetAppliedVersions(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', fn() => true);
@@ -36,7 +36,7 @@ class MigratorTest extends TestCase
self::assertSame(['foo'], $migrator->appliedVersions());
}
- public function testSetAppliedVersionsTrimArgument(): void {
+ public static function testSetAppliedVersionsTrimArgument(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', fn() => true);
@@ -54,7 +54,7 @@ class MigratorTest extends TestCase
$migrator->setAppliedVersions(['foo']);
}
- public function testVersions(): void {
+ public static function testVersions(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', fn() => true);
$migrator->addMigration('bar', fn() => true);
@@ -64,7 +64,7 @@ class MigratorTest extends TestCase
self::assertSame(['bar', 'foo'], $versions);
}
- public function testMigrate(): void {
+ public static function testMigrate(): void {
$migrator = new Minz_Migrator();
$spy = false;
$migrator->addMigration('foo', function () use (&$spy) {
@@ -82,7 +82,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testMigrateCallsMigrationsInSortedOrder(): void {
+ public static function testMigrateCallsMigrationsInSortedOrder(): void {
$migrator = new Minz_Migrator();
$spy_foo_1_is_called = false;
$migrator->addMigration('2_foo', function () use (&$spy_foo_1_is_called) {
@@ -102,7 +102,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testMigrateDoesNotCallAppliedMigrations(): void {
+ public static function testMigrateDoesNotCallAppliedMigrations(): void {
$migrator = new Minz_Migrator();
$spy = false;
$migrator->addMigration('1_foo', function () use (&$spy) {
@@ -117,7 +117,7 @@ class MigratorTest extends TestCase
self::assertSame([], $result);
}
- public function testMigrateCallNonAppliedBetweenTwoApplied(): void {
+ public static function testMigrateCallNonAppliedBetweenTwoApplied(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('1_foo', fn() => true);
$migrator->addMigration('2_foo', fn() => true);
@@ -132,7 +132,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testMigrateWithMigrationReturningFalseDoesNotApplyVersion(): void {
+ public static function testMigrateWithMigrationReturningFalseDoesNotApplyVersion(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('1_foo', fn() => true);
$migrator->addMigration('2_foo', fn() => false);
@@ -146,7 +146,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testMigrateWithMigrationReturningFalseDoesNotExecuteNextMigrations(): void {
+ public static function testMigrateWithMigrationReturningFalseDoesNotExecuteNextMigrations(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('1_foo', fn() => false);
$spy = false;
@@ -164,7 +164,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testMigrateWithFailingMigration(): void {
+ public static function testMigrateWithFailingMigration(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', function () {
throw new \Exception('Oops, it failed.');
@@ -178,7 +178,7 @@ class MigratorTest extends TestCase
], $result);
}
- public function testUpToDate(): void {
+ public static function testUpToDate(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('foo', fn() => true);
$migrator->setAppliedVersions(['foo']);
@@ -188,7 +188,7 @@ class MigratorTest extends TestCase
self::assertTrue($upToDate);
}
- public function testUpToDateIfRemainingMigration(): void {
+ public static function testUpToDateIfRemainingMigration(): void {
$migrator = new Minz_Migrator();
$migrator->addMigration('1_foo', fn() => true);
$migrator->addMigration('2_foo', fn() => true);
@@ -199,7 +199,7 @@ class MigratorTest extends TestCase
self::assertFalse($upToDate);
}
- public function testUpToDateIfNoMigrations(): void {
+ public static function testUpToDateIfNoMigrations(): void {
$migrator = new Minz_Migrator();
$upToDate = $migrator->upToDate();
@@ -207,7 +207,7 @@ class MigratorTest extends TestCase
self::assertTrue($upToDate);
}
- public function testConstructorLoadsDirectory(): void {
+ public static function testConstructorLoadsDirectory(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations/';
$migrator = new Minz_Migrator($migrations_path);
$expected_versions = ['2019_12_22_FooBar', '2019_12_23_Baz'];
@@ -217,7 +217,7 @@ class MigratorTest extends TestCase
self::assertSame($expected_versions, array_keys($migrations));
}
- public function testExecute(): void {
+ public static function testExecute(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations/';
$applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt');
self::assertIsString($applied_migrations_path);
@@ -229,7 +229,7 @@ class MigratorTest extends TestCase
@unlink($applied_migrations_path);
}
- public function testExecuteWithAlreadyAppliedMigration(): void {
+ public static function testExecuteWithAlreadyAppliedMigration(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations/';
$applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt');
self::assertIsString($applied_migrations_path);
@@ -243,7 +243,7 @@ class MigratorTest extends TestCase
@unlink($applied_migrations_path);
}
- public function testExecuteWithAppliedMigrationInDifferentOrder(): void {
+ public static function testExecuteWithAppliedMigrationInDifferentOrder(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations/';
$applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt');
self::assertIsString($applied_migrations_path);
@@ -258,7 +258,7 @@ class MigratorTest extends TestCase
@unlink($applied_migrations_path);
}
- public function testExecuteFailsIfVersionPathDoesNotExist(): void {
+ public static function testExecuteFailsIfVersionPathDoesNotExist(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations/';
$applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt');
$expected_result = "Cannot open the {$applied_migrations_path} file";
@@ -270,7 +270,7 @@ class MigratorTest extends TestCase
@unlink($applied_migrations_path);
}
- public function testExecuteFailsIfAMigrationIsFailing(): void {
+ public static function testExecuteFailsIfAMigrationIsFailing(): void {
$migrations_path = TESTS_PATH . '/fixtures/migrations_with_failing/';
$applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt');
$expected_result = 'A migration failed to be applied, please see previous logs.';
diff --git a/tests/lib/PHPMailer/PHPMailerTest.php b/tests/lib/PHPMailer/PHPMailerTest.php
index bb08deaa8..8bc8378b6 100644
--- a/tests/lib/PHPMailer/PHPMailerTest.php
+++ b/tests/lib/PHPMailer/PHPMailerTest.php
@@ -5,7 +5,7 @@ use PHPMailer\PHPMailer\PHPMailer;
class PHPMailerTest extends PHPUnit\Framework\TestCase
{
- public function testPHPMailerClassExists(): void {
+ public static function testPHPMailerClassExists(): void {
self::assertTrue(class_exists(PHPMailer::class));
}
}