grav/tests/unit/Grav/Common/Page/PagesTest.php

300 lines
11 KiB
PHP
Raw Permalink Normal View History

<?php
use Codeception\Util\Fixtures;
use Grav\Common\Grav;
use Grav\Common\Page\Pages;
use Grav\Common\Page\Page;
2019-08-22 14:16:27 +02:00
use Grav\Common\Page\Interfaces\PageInterface;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
/**
* Class PagesTest
*/
class PagesTest extends \Codeception\TestCase\Test
{
/** @var Grav $grav */
protected $grav;
/** @var Pages $pages */
protected $pages;
/** @var PageInterface $root_page */
protected $root_page;
2021-02-01 10:14:53 +01:00
protected function _before(): void
{
$grav = Fixtures::get('grav');
$this->grav = $grav();
$this->pages = $this->grav['pages'];
2016-02-03 06:45:42 +01:00
$this->grav['config']->set('system.home.alias', '/home');
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$locator->addPath('page', '', 'tests/fake/simple-site/user/pages', false);
$this->pages->init();
}
2021-02-01 10:14:53 +01:00
public function testBase(): void
{
2021-02-01 10:14:53 +01:00
self::assertSame('', $this->pages->base());
$this->pages->base('/test');
2021-02-01 10:14:53 +01:00
self::assertSame('/test', $this->pages->base());
2016-02-02 15:46:55 +01:00
$this->pages->base('');
2021-02-01 10:14:53 +01:00
self::assertSame($this->pages->base(), '');
}
2021-02-01 10:14:53 +01:00
public function testLastModified(): void
{
2021-02-01 10:14:53 +01:00
self::assertNull($this->pages->lastModified());
$this->pages->lastModified('test');
2021-02-01 10:14:53 +01:00
self::assertSame('test', $this->pages->lastModified());
}
2021-02-01 10:14:53 +01:00
public function testInstances(): void
{
2021-02-01 10:14:53 +01:00
self::assertIsArray($this->pages->instances());
2019-10-14 09:57:26 +02:00
foreach ($this->pages->instances() as $instance) {
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $instance);
}
}
2021-02-01 10:14:53 +01:00
public function testRoutes(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
2021-02-01 10:14:53 +01:00
self::assertIsArray($this->pages->routes());
self::assertSame($folder . '/fake/simple-site/user/pages/01.home', $this->pages->routes()['/']);
self::assertSame($folder . '/fake/simple-site/user/pages/01.home', $this->pages->routes()['/home']);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog', $this->pages->routes()['/blog']);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-one', $this->pages->routes()['/blog/post-one']);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-two', $this->pages->routes()['/blog/post-two']);
self::assertSame($folder . '/fake/simple-site/user/pages/03.about', $this->pages->routes()['/about']);
}
2021-02-01 10:14:53 +01:00
public function testAddPage(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
2019-08-22 14:16:27 +02:00
$path = $folder . '/fake/single-pages/01.simple-page/default.md';
$aPage = new Page();
$aPage->init(new \SplFileInfo($path));
$this->pages->addPage($aPage, '/new-page');
2021-02-01 10:14:53 +01:00
self::assertContains('/new-page', array_keys($this->pages->routes()));
self::assertSame($folder . '/fake/single-pages/01.simple-page', $this->pages->routes()['/new-page']);
}
2021-02-01 10:14:53 +01:00
public function testSort(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
$aPage = $this->pages->find('/blog');
$subPagesSorted = $this->pages->sort($aPage);
2021-02-01 10:14:53 +01:00
self::assertIsArray($subPagesSorted);
self::assertCount(2, $subPagesSorted);
2021-02-01 10:14:53 +01:00
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted)[0]);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted)[1]);
2021-02-01 10:14:53 +01:00
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted));
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted));
2021-02-01 10:14:53 +01:00
self::assertSame(['slug' => 'post-one'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-one']);
self::assertSame(['slug' => 'post-two'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-two']);
$subPagesSorted = $this->pages->sort($aPage, null, 'desc');
2021-02-01 10:14:53 +01:00
self::assertIsArray($subPagesSorted);
self::assertCount(2, $subPagesSorted);
2021-02-01 10:14:53 +01:00
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted)[0]);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted)[1]);
2021-02-01 10:14:53 +01:00
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted));
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted));
2021-02-01 10:14:53 +01:00
self::assertSame(['slug' => 'post-one'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-one']);
self::assertSame(['slug' => 'post-two'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-two']);
}
2021-02-01 10:14:53 +01:00
public function testSortCollection(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
$aPage = $this->pages->find('/blog');
$subPagesSorted = $this->pages->sortCollection($aPage->children(), $aPage->orderBy());
2021-02-01 10:14:53 +01:00
self::assertIsArray($subPagesSorted);
self::assertCount(2, $subPagesSorted);
2021-02-01 10:14:53 +01:00
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted)[0]);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted)[1]);
2021-02-01 10:14:53 +01:00
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted));
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted));
2021-02-01 10:14:53 +01:00
self::assertSame(['slug' => 'post-one'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-one']);
self::assertSame(['slug' => 'post-two'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-two']);
$subPagesSorted = $this->pages->sortCollection($aPage->children(), $aPage->orderBy(), 'desc');
2021-02-01 10:14:53 +01:00
self::assertIsArray($subPagesSorted);
self::assertCount(2, $subPagesSorted);
2021-02-01 10:14:53 +01:00
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted)[0]);
self::assertSame($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted)[1]);
2021-02-01 10:14:53 +01:00
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-one', array_keys($subPagesSorted));
self::assertContains($folder . '/fake/simple-site/user/pages/02.blog/post-two', array_keys($subPagesSorted));
2021-02-01 10:14:53 +01:00
self::assertSame(['slug' => 'post-one'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-one']);
self::assertSame(['slug' => 'post-two'], $subPagesSorted[$folder . '/fake/simple-site/user/pages/02.blog/post-two']);
}
2021-02-01 10:14:53 +01:00
public function testGet(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
//Page existing
2019-08-22 14:16:27 +02:00
$aPage = $this->pages->get($folder . '/fake/simple-site/user/pages/03.about');
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $aPage);
//Page not existing
2019-08-22 14:16:27 +02:00
$anotherPage = $this->pages->get($folder . '/fake/simple-site/user/pages/03.non-existing');
2021-02-01 10:14:53 +01:00
self::assertNull($anotherPage);
}
2021-02-01 10:14:53 +01:00
public function testChildren(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
2019-08-22 14:16:27 +02:00
$folder = $locator->findResource('tests://');
//Page existing
2019-08-22 14:16:27 +02:00
$children = $this->pages->children($folder . '/fake/simple-site/user/pages/02.blog');
2021-02-01 10:14:53 +01:00
self::assertInstanceOf('Grav\Common\Page\Collection', $children);
//Page not existing
2019-08-22 14:16:27 +02:00
$children = $this->pages->children($folder . '/fake/whatever/non-existing');
2021-02-01 10:14:53 +01:00
self::assertSame([], $children->toArray());
}
2021-02-01 10:14:53 +01:00
public function testDispatch(): void
{
$aPage = $this->pages->dispatch('/blog');
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $aPage);
$aPage = $this->pages->dispatch('/about');
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $aPage);
$aPage = $this->pages->dispatch('/blog/post-one');
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $aPage);
//Page not existing
$aPage = $this->pages->dispatch('/non-existing');
2021-02-01 10:14:53 +01:00
self::assertNull($aPage);
}
2021-02-01 10:14:53 +01:00
public function testRoot(): void
{
$root = $this->pages->root();
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $root);
self::assertSame('pages', $root->folder());
}
2021-02-01 10:14:53 +01:00
public function testBlueprints(): void
{
}
public function testAll()
{
2021-02-01 10:14:53 +01:00
self::assertIsObject($this->pages->all());
self::assertIsArray($this->pages->all()->toArray());
2019-10-14 09:57:26 +02:00
foreach ($this->pages->all() as $page) {
2021-02-01 10:14:53 +01:00
self::assertInstanceOf(PageInterface::class, $page);
}
}
2021-02-01 10:14:53 +01:00
public function testGetList(): void
{
$list = $this->pages->getList();
2021-02-01 10:14:53 +01:00
self::assertIsArray($list);
self::assertSame('&mdash;-&rtrif; Home', $list['/']);
self::assertSame('&mdash;-&rtrif; Blog', $list['/blog']);
}
2021-02-01 16:43:28 +01:00
public function testTranslatedLanguages(): void
2021-01-30 14:50:20 +01:00
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$folder = $locator->findResource('tests://');
$page = $this->pages->get($folder . '/fake/simple-site/user/pages/04.page-translated');
$this->assertInstanceOf(PageInterface::class, $page);
$translatedLanguages = $page->translatedLanguages();
$this->assertIsArray($translatedLanguages);
$this->assertSame(["en" => "/page-translated", "fr" => "/page-translated"], $translatedLanguages);
}
public function testLongPathTranslatedLanguages(): void
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$folder = $locator->findResource('tests://');
$page = $this->pages->get($folder . '/fake/simple-site/user/pages/05.translatedlong/part2');
$this->assertInstanceOf(PageInterface::class, $page);
$translatedLanguages = $page->translatedLanguages();
$this->assertIsArray($translatedLanguages);
$this->assertSame(["en" => "/translatedlong/part2", "fr" => "/translatedlong/part2"], $translatedLanguages);
}
2021-02-01 10:14:53 +01:00
public function testGetTypes(): void
{
}
2021-02-01 10:14:53 +01:00
public function testTypes(): void
{
}
2021-02-01 10:14:53 +01:00
public function testModularTypes(): void
{
}
2021-02-01 10:14:53 +01:00
public function testPageTypes(): void
{
}
2021-02-01 10:14:53 +01:00
public function testAccessLevels(): void
{
}
2021-02-01 10:14:53 +01:00
public function testParents(): void
{
}
2021-02-01 10:14:53 +01:00
public function testParentsRawRoutes(): void
{
}
2021-02-01 10:14:53 +01:00
public function testGetHomeRoute(): void
{
}
2021-02-01 10:14:53 +01:00
public function testResetPages(): void
{
}
}