Fix issue where cache file doesn't exist, add tests for Menu Helper
This commit is contained in:
parent
28e03f6fb2
commit
c3643565e3
@ -81,7 +81,9 @@ class MenuGenerator extends UrlGenerator {
|
|||||||
|
|
||||||
foreach ($menu_config as $title => $path)
|
foreach ($menu_config as $title => $path)
|
||||||
{
|
{
|
||||||
$selected = $this->string($path)->contains($this->path());
|
$has = $this->string($path)->contains($this->path());
|
||||||
|
$selected = ($has && strlen($path) >= strlen($this->path()));
|
||||||
|
|
||||||
$link = $this->helper->a($this->url($path), $title);
|
$link = $this->helper->a($this->url($path), $title);
|
||||||
|
|
||||||
$attrs = ($selected)
|
$attrs = ($selected)
|
||||||
|
@ -42,12 +42,17 @@ class Anime extends API {
|
|||||||
* Update the selected anime
|
* Update the selected anime
|
||||||
*
|
*
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return array
|
* @return array|false
|
||||||
*/
|
*/
|
||||||
public function update($data)
|
public function update($data)
|
||||||
{
|
{
|
||||||
// @TODO use Hummingbird Auth class
|
$auth = $this->container->get('auth');
|
||||||
$data['auth_token'] = '';
|
if ( ! $auth->is_authenticated())
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['auth_token'] = $auth->get_auth_token();
|
||||||
|
|
||||||
$response = $this->client->post("libraries/{$data['id']}", [
|
$response = $this->client->post("libraries/{$data['id']}", [
|
||||||
'body' => $data
|
'body' => $data
|
||||||
@ -193,7 +198,9 @@ class Anime extends API {
|
|||||||
$cache_file = _dir($this->config->get('data_cache_path'), "anime-{$status}.json");
|
$cache_file = _dir($this->config->get('data_cache_path'), "anime-{$status}.json");
|
||||||
$transformed_cache_file = _dir($this->config->get('data_cache_path'), "anime-{$status}-transformed.json");
|
$transformed_cache_file = _dir($this->config->get('data_cache_path'), "anime-{$status}-transformed.json");
|
||||||
|
|
||||||
$cached = json_decode(file_get_contents($cache_file), TRUE);
|
$cached = (file_exists($cache_file))
|
||||||
|
? json_decode(file_get_contents($cache_file), TRUE)
|
||||||
|
: [];
|
||||||
$api_data = json_decode($response->getBody(), TRUE);
|
$api_data = json_decode($response->getBody(), TRUE);
|
||||||
|
|
||||||
if ($api_data === $cached && file_exists($transformed_cache_file))
|
if ($api_data === $cached && file_exists($transformed_cache_file))
|
||||||
|
@ -126,7 +126,10 @@ class Manga extends API {
|
|||||||
$cache_file = _dir($this->config->get('data_cache_path'), 'manga.json');
|
$cache_file = _dir($this->config->get('data_cache_path'), 'manga.json');
|
||||||
$transformed_cache_file = _dir($this->config->get('data_cache_path'), 'manga-transformed.json');
|
$transformed_cache_file = _dir($this->config->get('data_cache_path'), 'manga-transformed.json');
|
||||||
|
|
||||||
$cached_data = json_decode(file_get_contents($cache_file), TRUE);
|
|
||||||
|
$cached_data = file_exists($cache_file)
|
||||||
|
? json_decode(file_get_contents($cache_file), TRUE)
|
||||||
|
: [];
|
||||||
|
|
||||||
if ($cached_data === $api_data && file_exists($transformed_cache_file))
|
if ($cached_data === $api_data && file_exists($transformed_cache_file))
|
||||||
{
|
{
|
||||||
|
74
tests/AnimeClient/Helper/MenuHelperTest.php
Normal file
74
tests/AnimeClient/Helper/MenuHelperTest.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Aviat\AnimeClient\Helper\Menu as MenuHelper;
|
||||||
|
|
||||||
|
class MenuHelperTest extends AnimeClient_TestCase {
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->helper = $this->container->get('html-helper');
|
||||||
|
$this->urlGenerator = $this->container->get('url-generator');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInvoke()
|
||||||
|
{
|
||||||
|
$menus = [
|
||||||
|
'no selection' => [
|
||||||
|
'route_prefix' => '/foo',
|
||||||
|
'items' => [
|
||||||
|
'bar' => '/bar'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'selected' => [
|
||||||
|
'route_prefix' => '',
|
||||||
|
'items' => [
|
||||||
|
'index' => '/foobar'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$expected = [];
|
||||||
|
|
||||||
|
// No selection
|
||||||
|
$link = $this->helper->a($this->urlGenerator->url('/foo/bar'), 'Bar');
|
||||||
|
$this->helper->ul()->rawItem($link);
|
||||||
|
$expected['no selection'] = $this->helper->ul()->__toString();
|
||||||
|
|
||||||
|
// selected
|
||||||
|
$link = $this->helper->a($this->urlGenerator->url('/foobar'), 'Index');
|
||||||
|
$this->helper->ul()->rawItem($link, ['class' => 'selected']);
|
||||||
|
$expected['selected'] = $this->helper->ul()->__toString();
|
||||||
|
|
||||||
|
// Set config for tests
|
||||||
|
$config = $this->container->get('config');
|
||||||
|
$config->set('menus', $menus);
|
||||||
|
$this->container->set('config', $config);
|
||||||
|
|
||||||
|
foreach($menus as $case => $config)
|
||||||
|
{
|
||||||
|
if ($case === 'selected')
|
||||||
|
{
|
||||||
|
$this->setSuperGlobals([
|
||||||
|
'_SERVER' => [
|
||||||
|
'HTTP_HOST' => 'localhost',
|
||||||
|
'REQUEST_URI' => '/foobar'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->setSuperGlobals([
|
||||||
|
'_SERVER' => [
|
||||||
|
'HTTP_HOST' => 'localhost',
|
||||||
|
'REQUEST_URI' => '/applesauceisgreat'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$helper = new MenuHelper();
|
||||||
|
$helper->setContainer($this->container);
|
||||||
|
$this->assertEquals($expected[$case], (string)$helper($case));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1
tests/test_data/anime_list/anime-all-transformed.json
Normal file
1
tests/test_data/anime_list/anime-all-transformed.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_data/anime_list/anime-all.json
Normal file
1
tests/test_data/anime_list/anime-all.json
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user