nextcloud/tests/lib/App/InfoParserTest.php
Carl Schwan d5c23dbb9f Move CappedMemoryCache to OCP
This is an helpful helper that should be used in more place than just
server and this is already the case with groupfodlers, deck, user_oidc
and more using it, so let's make it public

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-07-14 15:54:31 +02:00

60 lines
1.5 KiB
PHP

<?php
/**
* @author Thomas Müller
* @copyright 2014 Thomas Müller deepdiver@owncloud.com
* later.
* See the COPYING-README file.
*/
namespace Test\App;
use OC;
use OC\App\InfoParser;
use Test\TestCase;
use OCP\Cache\CappedMemoryCache;
class InfoParserTest extends TestCase {
/** @var OCP\Cache\CappedMemoryCache */
private static $cache;
public static function setUpBeforeClass(): void {
self::$cache = new CappedMemoryCache();
}
public function parserTest($expectedJson, $xmlFile, $cache = null) {
$parser = new InfoParser($cache);
$expectedData = null;
if (!is_null($expectedJson)) {
$expectedData = json_decode(file_get_contents(OC::$SERVERROOT . "/tests/data/app/$expectedJson"), true);
}
$data = $parser->parse(OC::$SERVERROOT. "/tests/data/app/$xmlFile");
$this->assertEquals($expectedData, $data);
}
/**
* @dataProvider providesInfoXml
*/
public function testParsingValidXmlWithoutCache($expectedJson, $xmlFile) {
$this->parserTest($expectedJson, $xmlFile);
}
/**
* @dataProvider providesInfoXml
*/
public function testParsingValidXmlWithCache($expectedJson, $xmlFile) {
$this->parserTest($expectedJson, $xmlFile, self::$cache);
}
public function providesInfoXml(): array {
return [
['expected-info.json', 'valid-info.xml'],
[null, 'invalid-info.xml'],
['expected-info.json', 'valid-info.xml'],
[null, 'invalid-info.xml'],
['navigation-one-item.json', 'navigation-one-item.xml'],
['navigation-two-items.json', 'navigation-two-items.xml'],
];
}
}